blob: cf5941d70a785a070a3e82767db2b72582548fad [file] [log] [blame]
Narumol Prangnawarat15effd82019-10-22 14:17:11 +01001//
2// Copyright © 2019 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
janeil01c4946c72019-11-07 09:32:28 +00006#include <armnn/Types.hpp>
Narumol Prangnawarat15effd82019-10-22 14:17:11 +01007
Narumol Prangnawaratdbdd1b42019-11-15 17:38:44 +00008#include "LabelsAndEventClasses.hpp"
9#include "ProfilingGuidGenerator.hpp"
10
11#include <set>
12
Narumol Prangnawarat15effd82019-10-22 14:17:11 +010013#include <boost/test/unit_test.hpp>
Matteo Martincigh15717002019-11-22 14:13:02 +000014#include <boost/format.hpp>
Narumol Prangnawarat15effd82019-10-22 14:17:11 +010015
16using namespace armnn::profiling;
17
18BOOST_AUTO_TEST_SUITE(ProfilingGuidTests)
19
20BOOST_AUTO_TEST_CASE(GuidTest)
21{
22 ProfilingGuid guid0(0);
23 ProfilingGuid guid1(1);
24 ProfilingGuid guid2(1);
25
26 BOOST_TEST(guid0 != guid1);
27 BOOST_TEST(guid1 == guid2);
28 BOOST_TEST(guid0 < guid1);
29 BOOST_TEST(guid0 <= guid1);
30 BOOST_TEST(guid1 <= guid2);
31 BOOST_TEST(guid1 > guid0);
32 BOOST_TEST(guid1 >= guid0);
33 BOOST_TEST(guid1 >= guid2);
34}
35
36BOOST_AUTO_TEST_CASE(StaticGuidTest)
37{
38 ProfilingStaticGuid guid0(0);
39 ProfilingStaticGuid guid1(1);
40 ProfilingStaticGuid guid2(1);
41
42 BOOST_TEST(guid0 != guid1);
43 BOOST_TEST(guid1 == guid2);
44 BOOST_TEST(guid0 < guid1);
45 BOOST_TEST(guid0 <= guid1);
46 BOOST_TEST(guid1 <= guid2);
47 BOOST_TEST(guid1 > guid0);
48 BOOST_TEST(guid1 >= guid0);
49 BOOST_TEST(guid1 >= guid2);
50}
51
52BOOST_AUTO_TEST_CASE(DynamicGuidTest)
53{
54 ProfilingDynamicGuid guid0(0);
55 ProfilingDynamicGuid guid1(1);
56 ProfilingDynamicGuid guid2(1);
57
58 BOOST_TEST(guid0 != guid1);
59 BOOST_TEST(guid1 == guid2);
60 BOOST_TEST(guid0 < guid1);
61 BOOST_TEST(guid0 <= guid1);
62 BOOST_TEST(guid1 <= guid2);
63 BOOST_TEST(guid1 > guid0);
64 BOOST_TEST(guid1 >= guid0);
65 BOOST_TEST(guid1 >= guid2);
66}
67
Narumol Prangnawaratdbdd1b42019-11-15 17:38:44 +000068void CheckStaticGuid(uint64_t guid, uint64_t expectedGuid)
69{
70 BOOST_TEST(guid == expectedGuid);
71 BOOST_TEST(guid >= MIN_STATIC_GUID);
72}
73
74void CheckDynamicGuid(uint64_t guid, uint64_t expectedGuid)
75{
76 BOOST_TEST(guid == expectedGuid);
77 BOOST_TEST(guid < MIN_STATIC_GUID);
78}
79
80BOOST_AUTO_TEST_CASE(StaticGuidGeneratorCollisionTest)
81{
82 ProfilingGuidGenerator generator;
83 std::set<uint64_t> guids;
Narumol Prangnawaratdbdd1b42019-11-15 17:38:44 +000084 for (int i = 0; i < 1000000; ++i)
85 {
Matteo Martincigh15717002019-11-22 14:13:02 +000086 std::stringstream ss;
87 ss << i;
88 std::string str = ss.str();
Narumol Prangnawaratdbdd1b42019-11-15 17:38:44 +000089 ProfilingStaticGuid guid = generator.GenerateStaticId(str.c_str());
90 if (guids.find(guid) != guids.end())
91 {
Matteo Martincigh15717002019-11-22 14:13:02 +000092 BOOST_ERROR(boost::str(boost::format("GUID collision occurred: %1% -> %2%") % str % guid));
93 break;
Narumol Prangnawaratdbdd1b42019-11-15 17:38:44 +000094 }
95 guids.insert(guid);
96 }
Narumol Prangnawaratdbdd1b42019-11-15 17:38:44 +000097}
98
99BOOST_AUTO_TEST_CASE(StaticGuidGeneratorTest)
100{
101 ProfilingGuidGenerator generator;
102
103 ProfilingStaticGuid staticGuid0 = generator.GenerateStaticId("name");
104 CheckStaticGuid(staticGuid0, LabelsAndEventClasses::NAME_GUID);
105 BOOST_TEST(staticGuid0 != generator.GenerateStaticId("Name"));
106
107 ProfilingStaticGuid staticGuid1 = generator.GenerateStaticId("type");
108 CheckStaticGuid(staticGuid1, LabelsAndEventClasses::TYPE_GUID);
109 BOOST_TEST(staticGuid1 != generator.GenerateStaticId("Type"));
110
111 ProfilingStaticGuid staticGuid2 = generator.GenerateStaticId("index");
112 CheckStaticGuid(staticGuid2, LabelsAndEventClasses::INDEX_GUID);
113 BOOST_TEST(staticGuid2 != generator.GenerateStaticId("Index"));
114}
115
116BOOST_AUTO_TEST_CASE(DynamicGuidGeneratorTest)
117{
118 ProfilingGuidGenerator generator;
119
120 for (unsigned int i = 0; i < 100; ++i)
121 {
122 ProfilingDynamicGuid guid = generator.NextGuid();
123 CheckDynamicGuid(guid, i);
124 }
125}
126
Narumol Prangnawarat15effd82019-10-22 14:17:11 +0100127BOOST_AUTO_TEST_SUITE_END()