1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storageframework/generic/clock/time.h>
#include <vespa/storageframework/defaultimplementation/clock/fakeclock.h>
#include <vespa/vdstestlib/cppunit/macros.h>
namespace storage {
namespace framework {
namespace defaultimplementation {
struct TimeTest : public CppUnit::TestFixture
{
void testBasics();
void testCreatedFromClock();
void canAssignMicrosecondResolutionTimeToFakeClock();
CPPUNIT_TEST_SUITE(TimeTest);
CPPUNIT_TEST(testBasics); // Fails sometimes, test needs rewrite.
CPPUNIT_TEST(testCreatedFromClock);
CPPUNIT_TEST(canAssignMicrosecondResolutionTimeToFakeClock);
CPPUNIT_TEST_SUITE_END();
};
CPPUNIT_TEST_SUITE_REGISTRATION(TimeTest);
void
TimeTest::testBasics()
{
SecondTime timeSec(1);
MilliSecTime timeMillis = timeSec.getMillis();
CPPUNIT_ASSERT_EQUAL(uint64_t(1000), timeMillis.getTime());
CPPUNIT_ASSERT_EQUAL(timeSec, timeMillis.getSeconds());
MicroSecTime timeMicros = timeSec.getMicros();
CPPUNIT_ASSERT_EQUAL(timeSec.getMicros(), timeMillis.getMicros());
CPPUNIT_ASSERT_EQUAL(timeMillis, timeMicros.getMillis());
CPPUNIT_ASSERT_EQUAL(timeSec, timeMicros.getSeconds());
MicroSecTime timeMicros2 = timeMicros;
CPPUNIT_ASSERT(timeMicros2 == timeMicros);
timeMicros2 += MicroSecTime(25000);
CPPUNIT_ASSERT(timeMicros2 > timeMicros);
CPPUNIT_ASSERT(timeMicros < timeMicros2);
timeMicros2 -= MicroSecTime(30000);
CPPUNIT_ASSERT(timeMicros2 < timeMicros);
CPPUNIT_ASSERT(timeMicros > timeMicros2);
timeMicros2 += MicroSecTime(55000);
MilliSecTime timeMillis2 = timeMicros2.getMillis();
CPPUNIT_ASSERT(timeMillis2 > timeMillis);
CPPUNIT_ASSERT_EQUAL(uint64_t(1050), timeMillis2.getTime());
CPPUNIT_ASSERT_EQUAL(timeSec, timeMillis2.getSeconds());
}
void
TimeTest::testCreatedFromClock()
{
defaultimplementation::FakeClock clock;
clock.setAbsoluteTimeInSeconds(600);
CPPUNIT_ASSERT_EQUAL(SecondTime(600), SecondTime(clock));
CPPUNIT_ASSERT_EQUAL(MilliSecTime(600 * 1000), MilliSecTime(clock));
CPPUNIT_ASSERT_EQUAL(MicroSecTime(600 * 1000 * 1000), MicroSecTime(clock));
}
void
TimeTest::canAssignMicrosecondResolutionTimeToFakeClock()
{
defaultimplementation::FakeClock clock;
clock.setAbsoluteTimeInMicroSeconds(1234567); // 1.234567 seconds
// All non-microsec time points must necessarily be truncated.
CPPUNIT_ASSERT_EQUAL(SecondTime(1), SecondTime(clock));
CPPUNIT_ASSERT_EQUAL(MilliSecTime(1234), MilliSecTime(clock));
CPPUNIT_ASSERT_EQUAL(MicroSecTime(1234567), MicroSecTime(clock));
}
} // defaultimplementation
} // framework
} // storage
|