]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
erasure-code: test NEON arch selection logic 2694/head
authorLoic Dachary <ldachary@redhat.com>
Mon, 24 Nov 2014 16:48:59 +0000 (17:48 +0100)
committerLoic Dachary <ldachary@redhat.com>
Tue, 25 Nov 2014 13:17:38 +0000 (14:17 +0100)
The jerasure plugin loads the plugin that matches the architecture
supported by the CPU at runtime. Include the NEON plugin in the tests.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
src/test/erasure-code/TestErasureCodePluginJerasure.cc
src/test/erasure-code/TestJerasurePluginNEON.cc

index e6cb4c4458b8956509fdae3e44e7cb83b4b8e392..e8128a8bdee16ebfb406485077135b6a12c008d1 100644 (file)
@@ -4,6 +4,7 @@
  * Ceph distributed storage system
  *
  * Copyright (C) 2013,2014 Cloudwatt <libre.licensing@cloudwatt.com>
+ * Copyright (C) 2014 Red Hat <contact@redhat.com>
  *
  * Author: Loic Dachary <loic@dachary.org>
  *
@@ -17,6 +18,7 @@
 #include <errno.h>
 #include "arch/probe.h"
 #include "arch/intel.h"
+#include "arch/neon.h"
 #include "global/global_init.h"
 #include "erasure-code/ErasureCodePlugin.h"
 #include "common/ceph_argparse.h"
@@ -65,6 +67,7 @@ TEST(ErasureCodePlugin, select)
   int arch_intel_ssse3  = ceph_arch_intel_ssse3;
   int arch_intel_sse3   = ceph_arch_intel_sse3;
   int arch_intel_sse2   = ceph_arch_intel_sse2;
+  int arch_neon                = ceph_arch_neon;
 
   ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
   map<std::string,std::string> parameters;
@@ -82,6 +85,7 @@ TEST(ErasureCodePlugin, select)
     ceph_arch_intel_ssse3  = 1;
     ceph_arch_intel_sse3   = 1;
     ceph_arch_intel_sse2   = 1;
+    ceph_arch_neon        = 0;
 
     ErasureCodeInterfaceRef erasure_code;
     int sse4_side_effect = -444;
@@ -96,6 +100,7 @@ TEST(ErasureCodePlugin, select)
     ceph_arch_intel_ssse3  = 1;
     ceph_arch_intel_sse3   = 1;
     ceph_arch_intel_sse2   = 1;
+    ceph_arch_neon        = 0;
 
     ErasureCodeInterfaceRef erasure_code;
     int sse3_side_effect = -333;
@@ -110,11 +115,27 @@ TEST(ErasureCodePlugin, select)
     ceph_arch_intel_ssse3  = 1;
     ceph_arch_intel_sse3   = 0;
     ceph_arch_intel_sse2   = 1;
+    ceph_arch_neon        = 0;
 
     ErasureCodeInterfaceRef erasure_code;
     int generic_side_effect = -111;
     EXPECT_EQ(generic_side_effect, instance.factory("jerasure", parameters,
-                                                 &erasure_code, cerr));
+                                                   &erasure_code, cerr));
+  }
+  // neon is set, load the neon plugin
+  {
+    ceph_arch_intel_pclmul = 0;
+    ceph_arch_intel_sse42  = 0;
+    ceph_arch_intel_sse41  = 0;
+    ceph_arch_intel_ssse3  = 0;
+    ceph_arch_intel_sse3   = 0;
+    ceph_arch_intel_sse2   = 0;
+    ceph_arch_neon        = 1;
+
+    ErasureCodeInterfaceRef erasure_code;
+    int generic_side_effect = -555;
+    EXPECT_EQ(generic_side_effect, instance.factory("jerasure", parameters,
+                                                   &erasure_code, cerr));
   }
 
 
@@ -125,6 +146,7 @@ TEST(ErasureCodePlugin, select)
   ceph_arch_intel_ssse3  = arch_intel_ssse3;
   ceph_arch_intel_sse3   = arch_intel_sse3;
   ceph_arch_intel_sse2   = arch_intel_sse2;
+  ceph_arch_neon        = arch_neon;
 }
 
 TEST(ErasureCodePlugin, sse)
index 30604857e223697a31d95069e3c30fd99b3e0739..cd38ccbd1e8938f9508b70db57d02c477e1ab423 100644 (file)
@@ -21,5 +21,5 @@ extern "C" const char *__erasure_code_version() { return CEPH_GIT_NICE_VER; }
 
 extern "C" int __erasure_code_init(char *plugin_name, char *directory)
 {
-  return -444;
+  return -555;
 }