1212TEST (ExpiringWaitFreeHashMap, basic) {
1313 td::ExpiringWaitFreeHashMap<int , td::string> map (1e9 );
1414 ASSERT_TRUE (map.empty ());
15- ASSERT_TRUE (map.get (1 ) == nullptr );
15+ ASSERT_TRUE (map.access (1 ) == nullptr );
1616 map.set (1 , " a" );
1717 map.set (2 , " b" );
1818 ASSERT_EQ (2u , map.calc_size ());
19- ASSERT_EQ (" a" , *map.get (1 ));
19+ ASSERT_EQ (" a" , *map.access (1 ));
2020 map.set (1 , " c" );
21- ASSERT_EQ (" c" , *map.get (1 ));
21+ ASSERT_EQ (" c" , *map.access (1 ));
2222 ASSERT_EQ (1u , map.erase (2 ));
2323 ASSERT_EQ (0u , map.erase (2 ));
24- ASSERT_TRUE (map.get (2 ) == nullptr );
24+ ASSERT_TRUE (map.access (2 ) == nullptr );
2525 ASSERT_EQ (1u , map.calc_size ());
2626 map.clear ();
2727 ASSERT_TRUE (map.empty ());
2828 map.set (3 , " d" );
29- ASSERT_EQ (" d" , *map.get (3 ));
29+ ASSERT_EQ (" d" , *map.access (3 ));
3030}
3131
3232TEST (ExpiringWaitFreeHashMap, expiration) {
@@ -36,16 +36,16 @@ TEST(ExpiringWaitFreeHashMap, expiration) {
3636 }
3737 ASSERT_EQ (25u , map.calc_size ());
3838 td::Time::jump_in_future (td::Time::now () + 6.0 );
39- ASSERT_EQ (1 , *map.get (1 ));
39+ ASSERT_EQ (1 , *map.access (1 ));
4040 td::Time::jump_in_future (td::Time::now () + 6.0 );
4141 // items 2-25 are expired, but only 10 of them can be dropped during a call
42- ASSERT_TRUE (map.get (26 ) == nullptr );
42+ ASSERT_TRUE (map.access (26 ) == nullptr );
4343 ASSERT_EQ (15u , map.calc_size ());
44- ASSERT_TRUE (map.get (26 ) == nullptr );
44+ ASSERT_TRUE (map.access (26 ) == nullptr );
4545 ASSERT_EQ (5u , map.calc_size ());
46- ASSERT_TRUE (map.get (26 ) == nullptr );
46+ ASSERT_TRUE (map.access (26 ) == nullptr );
4747 ASSERT_EQ (1u , map.calc_size ());
48- ASSERT_EQ (1 , *map.get (1 ));
48+ ASSERT_EQ (1 , *map.access (1 ));
4949}
5050
5151TEST (ExpiringWaitFreeHashMap, operator_brackets) {
@@ -54,14 +54,14 @@ TEST(ExpiringWaitFreeHashMap, operator_brackets) {
5454 ASSERT_EQ (1u , map.calc_size ());
5555 map[1 ] = 5 ;
5656 map[2 ]++;
57- ASSERT_EQ (5 , *map.get (1 ));
57+ ASSERT_EQ (5 , *map.access (1 ));
5858 ASSERT_EQ (1 , map[2 ]);
5959 ASSERT_EQ (2u , map.calc_size ());
6060 td::Time::jump_in_future (td::Time::now () + 6.0 );
6161 map[1 ] += 1 ;
6262 td::Time::jump_in_future (td::Time::now () + 6.0 );
6363 // item 2 is expired, but item 1 was accessed through operator[] recently
64- ASSERT_TRUE (map.get (3 ) == nullptr );
64+ ASSERT_TRUE (map.access (3 ) == nullptr );
6565 ASSERT_EQ (1u , map.calc_size ());
6666 ASSERT_EQ (6 , map[1 ]);
6767 ASSERT_EQ (0 , map[2 ]);
@@ -80,16 +80,16 @@ TEST(ExpiringWaitFreeHashMap, large) {
8080 }
8181 ASSERT_EQ (static_cast <size_t >(count), map.calc_size ());
8282 for (int i = 1 ; i <= count; i++) {
83- ASSERT_EQ (i, *map.get (i));
83+ ASSERT_EQ (i, *map.access (i));
8484 }
8585 td::Time::jump_in_future (td::Time::now () + 12.0 );
86- ASSERT_TRUE (map.get (count + 1 ) == nullptr );
86+ ASSERT_TRUE (map.access (count + 1 ) == nullptr );
8787 ASSERT_EQ (static_cast <size_t >(count - 10 ), map.calc_size ());
8888 while (!map.empty ()) {
89- ASSERT_TRUE (map.get (count + 1 ) == nullptr );
89+ ASSERT_TRUE (map.access (count + 1 ) == nullptr );
9090 }
9191 map.set (1 , 2 );
92- ASSERT_EQ (2 , *map.get (1 ));
92+ ASSERT_EQ (2 , *map.access (1 ));
9393}
9494
9595TEST (ExpiringWaitFreeHashMap, clear) {
@@ -102,29 +102,29 @@ TEST(ExpiringWaitFreeHashMap, clear) {
102102 map.clear ();
103103 ASSERT_TRUE (map.empty ());
104104 ASSERT_EQ (0u , map.calc_size ());
105- ASSERT_TRUE (map.get (1 ) == nullptr );
105+ ASSERT_TRUE (map.access (1 ) == nullptr );
106106 ASSERT_EQ (0u , map.erase (2 ));
107107
108108 map.set (1 , 10 );
109109 map[2 ] = 20 ;
110- ASSERT_EQ (10 , *map.get (1 ));
110+ ASSERT_EQ (10 , *map.access (1 ));
111111 ASSERT_EQ (20 , map[2 ]);
112112 ASSERT_EQ (0 , map[3 ]);
113113 ASSERT_EQ (3u , map.calc_size ());
114114 td::Time::jump_in_future (td::Time::now () + 6.0 );
115- ASSERT_EQ (10 , *map.get (1 ));
115+ ASSERT_EQ (10 , *map.access (1 ));
116116 td::Time::jump_in_future (td::Time::now () + 6.0 );
117117 // only items added after clear are dropped
118- ASSERT_TRUE (map.get (4 ) == nullptr );
118+ ASSERT_TRUE (map.access (4 ) == nullptr );
119119 ASSERT_EQ (1u , map.calc_size ());
120- ASSERT_EQ (10 , *map.get (1 ));
120+ ASSERT_EQ (10 , *map.access (1 ));
121121
122122 map.clear ();
123123 map.clear ();
124124 ASSERT_TRUE (map.empty ());
125125 map.set (5 , 50 );
126126 ASSERT_EQ (1u , map.calc_size ());
127- ASSERT_EQ (50 , *map.get (5 ));
127+ ASSERT_EQ (50 , *map.access (5 ));
128128 ASSERT_EQ (1u , map.erase (5 ));
129129 ASSERT_TRUE (map.empty ());
130130
@@ -136,14 +136,29 @@ TEST(ExpiringWaitFreeHashMap, clear) {
136136 map.clear ();
137137 ASSERT_TRUE (map.empty ());
138138 ASSERT_EQ (0u , map.calc_size ());
139- ASSERT_TRUE (map.get (count / 2 ) == nullptr );
139+ ASSERT_TRUE (map.access (count / 2 ) == nullptr );
140140 for (int i = 1 ; i <= count; i++) {
141141 map[i] = -i;
142142 }
143143 ASSERT_EQ (static_cast <size_t >(count), map.calc_size ());
144- ASSERT_EQ (-count / 2 , *map.get (count / 2 ));
144+ ASSERT_EQ (-count / 2 , *map.access (count / 2 ));
145145 map.clear ();
146146 map.set (1 , 1 );
147147 ASSERT_EQ (1u , map.calc_size ());
148+ ASSERT_EQ (1 , *map.access (1 ));
149+ }
150+
151+ TEST (ExpiringWaitFreeHashMap, get) {
152+ td::ExpiringWaitFreeHashMap<int , int > map (10.0 );
153+ map.set (1 , 1 );
154+ map.set (2 , 2 );
148155 ASSERT_EQ (1 , *map.get (1 ));
156+ ASSERT_TRUE (map.get (3 ) == nullptr );
157+ td::Time::jump_in_future (td::Time::now () + 6.0 );
158+ ASSERT_EQ (1 , *map.get (1 )); // doesn't update access time
159+ ASSERT_EQ (2 , *map.access (2 )); // updates access time
160+ td::Time::jump_in_future (td::Time::now () + 6.0 );
161+ ASSERT_TRUE (map.get (1 ) == nullptr ); // the expired item is dropped
162+ ASSERT_EQ (1u , map.calc_size ());
163+ ASSERT_EQ (2 , *map.get (2 ));
149164}
0 commit comments