[llvm] r356747 - [llvm-exegesis] Add clustering test.

Clement Courbet via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 22 06:13:13 PDT 2019


Author: courbet
Date: Fri Mar 22 06:13:12 2019
New Revision: 356747

URL: http://llvm.org/viewvc/llvm-project?rev=356747&view=rev
Log:
[llvm-exegesis] Add clustering test.

Summary: To show that dbscan is insensitive to the order of the points.

Subscribers: tschuett, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D59693

Modified:
    llvm/trunk/unittests/tools/llvm-exegesis/ClusteringTest.cpp

Modified: llvm/trunk/unittests/tools/llvm-exegesis/ClusteringTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/tools/llvm-exegesis/ClusteringTest.cpp?rev=356747&r1=356746&r2=356747&view=diff
==============================================================================
--- llvm/trunk/unittests/tools/llvm-exegesis/ClusteringTest.cpp (original)
+++ llvm/trunk/unittests/tools/llvm-exegesis/ClusteringTest.cpp Fri Mar 22 06:13:12 2019
@@ -22,6 +22,11 @@ using testing::Field;
 using testing::UnorderedElementsAre;
 using testing::UnorderedElementsAreArray;
 
+static constexpr auto HasPoints = [](const std::vector<int> &Indices) {
+  return Field(&InstructionBenchmarkClustering::Cluster::PointIndices,
+                 UnorderedElementsAreArray(Indices));
+};
+
 TEST(ClusteringTest, Clusters3D) {
   std::vector<InstructionBenchmark> Points(6);
 
@@ -41,11 +46,6 @@ TEST(ClusteringTest, Clusters3D) {
   // Error cluster: points {2}
   Points[2].Error = "oops";
 
-  auto HasPoints = [](const std::vector<int> &Indices) {
-    return Field(&InstructionBenchmarkClustering::Cluster::PointIndices,
-                 UnorderedElementsAreArray(Indices));
-  };
-
   auto Clustering = InstructionBenchmarkClustering::create(Points, 2, 0.25);
   ASSERT_TRUE((bool)Clustering);
   EXPECT_THAT(Clustering.get().getValidClusters(),
@@ -102,6 +102,38 @@ TEST(ClusteringTest, Ordering) {
             InstructionBenchmarkClustering::ClusterId::error());
 }
 
+TEST(ClusteringTest, Ordering1) {
+  std::vector<InstructionBenchmark> Points(3);
+
+  Points[0].Measurements = {
+      {"x", 0.0, 0.0}};
+  Points[1].Measurements = {
+      {"x", 1.0, 0.0}};
+  Points[2].Measurements = {
+      {"x", 2.0, 0.0}};
+
+  auto Clustering = InstructionBenchmarkClustering::create(Points, 2, 1.1);
+  ASSERT_TRUE((bool)Clustering);
+  EXPECT_THAT(Clustering.get().getValidClusters(),
+              UnorderedElementsAre(HasPoints({0, 1, 2})));
+}
+
+TEST(ClusteringTest, Ordering2) {
+  std::vector<InstructionBenchmark> Points(3);
+
+  Points[0].Measurements = {
+      {"x", 0.0, 0.0}};
+  Points[1].Measurements = {
+      {"x", 2.0, 0.0}};
+  Points[2].Measurements = {
+      {"x", 1.0, 0.0}};
+
+  auto Clustering = InstructionBenchmarkClustering::create(Points, 2, 1.1);
+  ASSERT_TRUE((bool)Clustering);
+  EXPECT_THAT(Clustering.get().getValidClusters(),
+              UnorderedElementsAre(HasPoints({0, 1, 2})));
+}
+
 } // namespace
 } // namespace exegesis
 } // namespace llvm




More information about the llvm-commits mailing list