@@ -39,15 +39,16 @@ bool hostReachable = false;
3939struct Fixture {
4040 Fixture ()
4141 {
42- o2::ccdb::CcdbApi api ;
42+ auto & ccdbManager = o2::ccdb::BasicCCDBManager::instance () ;
4343 if (std::getenv (" ALICEO2_CCDB_HOST" )) {
4444 ccdbUrl = std::string (std::getenv (" ALICEO2_CCDB_HOST" ));
4545 }
46- api.init (ccdbUrl);
47- hostReachable = api.isHostReachable ();
46+ hostReachable = ccdbManager.getCCDBAccessor ().isHostReachable ();
4847 char hostname[_POSIX_HOST_NAME_MAX];
4948 gethostname (hostname, _POSIX_HOST_NAME_MAX);
50- basePath = std::string (" Users/m/meide/BasicCCDBManager/" );
49+ basePath = std::string (" Users/m/meide/Tests/" ) + hostname + " /pid-" + getpid () + " /BasicCCDBManager/" ;
50+
51+ ccdbManager.setURL (ccdbUrl);
5152
5253 LOG (info) << " Path we will use in this test suite : " + basePath << std::endl;
5354 LOG (info) << " ccdb url: " << ccdbUrl << std::endl;
@@ -56,9 +57,7 @@ struct Fixture {
5657 ~Fixture ()
5758 {
5859 if (hostReachable) {
59- o2::ccdb::CcdbApi api;
60- api.init (ccdbUrl);
61- api.truncate (basePath + " *" ); // This deletes the data after test is run, disable if you want to inspect the data
60+ o2::ccdb::BasicCCDBManager::instance ().getCCDBAccessor ().truncate (basePath + " *" ); // This deletes the data after test is run, disable if you want to inspect the data
6261 LOG (info) << " Test data truncated/deleted (" << basePath << " )" << std::endl;
6362 }
6463 }
@@ -74,22 +73,6 @@ struct if_reachable {
7473 return hostReachable;
7574 }
7675};
77- /* *
78- * Fixture for the tests, i.e. code is ran in every test that uses it, i.e. it is like a setup and teardown for tests.
79- * Copied from testCcdbApi.cxx
80- */
81- struct test_fixture {
82- test_fixture ()
83- {
84- api.init (ccdbUrl);
85- metadata[" Hello" ] = " World" ;
86- LOG (info) << " *** " << boost::unit_test::framework::current_test_case ().p_name << " ***" << std::endl;
87- }
88- ~test_fixture () = default ;
89-
90- o2::ccdb::CcdbApi api;
91- std::map<std::string, std::string> metadata;
92- };
9376
9477// Only compare known and stable keys (avoid volatile ones like Date)
9578static const std::set<std::string> sStableKeys = {
@@ -112,23 +95,24 @@ BOOST_AUTO_TEST_CASE(testCachedHeaders, *boost::unit_test::precondition(if_reach
11295{
11396 // / ━━━━━━━ ARRANGE ━━━━━━━━━
11497 // First store objects to test with
115- test_fixture f;
116-
98+ auto & ccdbManager = o2::ccdb::BasicCCDBManager::instance ();
11799 std::string pathA = basePath + " CachingA" ;
118100 std::string pathB = basePath + " CachingB" ;
119101 std::string pathC = basePath + " CachingC" ;
120102 std::string ccdbObjO = " testObjectO" ;
121103 std::string ccdbObjN = " testObjectN" ;
122104 std::string ccdbObjX = " testObjectX" ;
123- std::map<std::string, std::string> md = f.metadata ;
105+ std::map<std::string, std::string> md = {
106+ {" Hello" , " World" },
107+ {" Key1" , " Value1" },
108+ {" Key2" , " Value2" },
109+ };
124110 long start = 1000 , stop = 3000 ;
125- f. api .storeAsTFileAny <std::string>(&ccdbObjO, pathA, md, start, stop);
126- f. api .storeAsTFileAny <std::string>(&ccdbObjN, pathB, md, start, stop);
127- f. api .storeAsTFileAny <std::string>(&ccdbObjX, pathC, md, start, stop);
111+ ccdbManager. getCCDBAccessor () .storeAsTFileAny <std::string>(&ccdbObjO, pathA, md, start, stop);
112+ ccdbManager. getCCDBAccessor () .storeAsTFileAny <std::string>(&ccdbObjN, pathB, md, start, stop);
113+ ccdbManager. getCCDBAccessor () .storeAsTFileAny <std::string>(&ccdbObjX, pathC, md, start, stop);
128114 // initilize the BasicCCDBManager
129- o2::ccdb::BasicCCDBManager& ccdbManager = o2::ccdb::BasicCCDBManager::instance ();
130115 ccdbManager.clearCache ();
131- ccdbManager.setURL (ccdbUrl);
132116 ccdbManager.setCaching (true ); // This is what we want to test.
133117
134118 // / ━━━━━━━━━━━ ACT ━━━━━━━━━━━━
@@ -193,20 +177,21 @@ BOOST_AUTO_TEST_CASE(testNonCachedHeaders, *boost::unit_test::precondition(if_re
193177{
194178 // / ━━━━━━━ ARRANGE ━━━━━━━━━
195179 // First store objects to test with
196- test_fixture f;
197-
180+ auto & ccdbManager = o2::ccdb::BasicCCDBManager::instance ();
198181 std::string pathA = basePath + " NonCachingA" ;
199182 std::string pathB = basePath + " NonCachingB" ;
200183 std::string ccdbObjO = " testObjectO" ;
201184 std::string ccdbObjN = " testObjectN" ;
202- std::map<std::string, std::string> md = f.metadata ;
185+ std::map<std::string, std::string> md = {
186+ {" Hello" , " World" },
187+ {" Key1" , " Value1" },
188+ {" Key2" , " Value2" },
189+ };
203190 long start = 1000 , stop = 2000 ;
204- f. api .storeAsTFileAny (&ccdbObjO, pathA, md, start, stop);
205- f. api .storeAsTFileAny (&ccdbObjN, pathB, md, start, stop);
191+ ccdbManager. getCCDBAccessor () .storeAsTFileAny (&ccdbObjO, pathA, md, start, stop);
192+ ccdbManager. getCCDBAccessor () .storeAsTFileAny (&ccdbObjN, pathB, md, start, stop);
206193 // initilize the BasicCCDBManager
207- o2::ccdb::BasicCCDBManager& ccdbManager = o2::ccdb::BasicCCDBManager::instance ();
208194 ccdbManager.clearCache ();
209- ccdbManager.setURL (ccdbUrl);
210195 ccdbManager.setCaching (false ); // This is what we want to test, no caching
211196
212197 // / ━━━━━━━━━━━ ACT ━━━━━━━━━━━━
@@ -217,6 +202,7 @@ BOOST_AUTO_TEST_CASE(testNonCachedHeaders, *boost::unit_test::precondition(if_re
217202 auto * obj2 = ccdbManager.getForTimeStamp <std::string>(pathB, (start + stop) / 2 , &headers2);
218203 auto * obj3 = ccdbManager.getForTimeStamp <std::string>(pathA, (start + stop) / 2 , &headers3); // Should not be cached since explicitly disabled
219204
205+ ccdbManager.setCaching (true ); // Restore default state
220206 // / ━━━━━━━━━━━ ASSERT ━━━━━━━━━━━
221207 // / Check that we got something
222208 BOOST_REQUIRE (obj1 != nullptr );
@@ -249,12 +235,17 @@ BOOST_AUTO_TEST_CASE(testNonCachedHeaders, *boost::unit_test::precondition(if_re
249235 BOOST_TEST (headers3.size () != 0 );
250236 BOOST_TEST (headers2.size () != 0 );
251237 BOOST_TEST (headers1 != headers2, " The headers for different objects should be different" );
238+
239+ // cleanup
240+ delete obj1;
241+ delete obj2;
242+ delete obj3;
252243}
253244
254- BOOST_AUTO_TEST_CASE (CacheFirstRetrievalAndHeadersPersistence)
245+ BOOST_AUTO_TEST_CASE (CacheFirstRetrievalAndHeadersPersistence, * boost::unit_test::precondition (if_reachable()) )
255246{
256- test_fixture f;
257247 // / ━━━━━━━ ARRANGE ━━━━━━━━━
248+ auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
258249 // Prepare two validity slots for same path to test ETag change later
259250 std::string path = basePath + " ObjA" ;
260251 std::string objV1 = " ObjectVersion1" ;
@@ -268,11 +259,9 @@ BOOST_AUTO_TEST_CASE(CacheFirstRetrievalAndHeadersPersistence)
268259 long v2stop = v2start + (v1stop - v1start);
269260 long mid1 = (v1start + v1stop) / 2 ;
270261 // Store 2 versions
271- f. api .storeAsTFileAny (&objV1, path, meta1, v1start, v1stop);
272- f. api .storeAsTFileAny (&objV2, path, meta1, v2start, v2stop);
262+ mgr. getCCDBAccessor () .storeAsTFileAny (&objV1, path, meta1, v1start, v1stop);
263+ mgr. getCCDBAccessor () .storeAsTFileAny (&objV2, path, meta1, v2start, v2stop);
273264
274- auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
275- mgr.setURL (ccdbUrl);
276265 mgr.clearCache ();
277266 mgr.setCaching (true );
278267 mgr.setFatalWhenNull (true );
@@ -294,6 +283,8 @@ BOOST_AUTO_TEST_CASE(CacheFirstRetrievalAndHeadersPersistence)
294283 // 5) Fifth retrieval with headers again to check persistence
295284 auto * p5 = mgr.getForTimeStamp <std::string>(path, mid1, &headers5);
296285
286+ mgr.setFatalWhenNull (false ); // restore default
287+
297288 // / ━━━━━━━ASSERT━━━━━━━━━
298289
299290 BOOST_TEST (p1 != nullptr );
@@ -336,17 +327,16 @@ BOOST_AUTO_TEST_CASE(CacheFirstRetrievalAndHeadersPersistence)
336327 BOOST_TEST (headers5[" UserKey1" ] == " UValue1" ); // internal unchanged
337328}
338329
339- BOOST_AUTO_TEST_CASE (FailedFetchDoesNotGiveMetadata)
330+ BOOST_AUTO_TEST_CASE (FailedFetchDoesNotGiveMetadata, * boost::unit_test::precondition (if_reachable()) )
340331{
341- test_fixture f;
342332
343333 // / ━━━━━━━ ARRANGE ━━━━━━━━━
334+ auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
344335 std::string path = basePath + " FailThenRecover" ;
345336 std::string content = " ContentX" ;
346337 std::map<std::string, std::string> meta{{" Alpha" , " Beta" }};
347338 long s = 300'000 , e = 310'000 ;
348- f.api .storeAsTFileAny (&content, path, meta, s, e);
349- auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
339+ mgr.getCCDBAccessor ().storeAsTFileAny (&content, path, meta, s, e);
350340 mgr.clearCache ();
351341 mgr.setCaching (true );
352342 mgr.setFatalWhenNull (false );
@@ -368,17 +358,16 @@ BOOST_AUTO_TEST_CASE(FailedFetchDoesNotGiveMetadata)
368358 mgr.setFatalWhenNull (true );
369359}
370360
371- BOOST_AUTO_TEST_CASE (FirstCallWithoutHeadersThenWithHeaders)
361+ BOOST_AUTO_TEST_CASE (FirstCallWithoutHeadersThenWithHeaders, * boost::unit_test::precondition (if_reachable()) )
372362{
373- test_fixture f;
374363
364+ auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
375365 std::string path = basePath + " LateHeaders" ;
376366 std::string body = " Late" ;
377367 std::map<std::string, std::string> meta{{" LateKey" , " LateVal" }};
378368 long s = 400'000 , e = 410'000 ;
379- f. api .storeAsTFileAny (&body, path, meta, s, e);
369+ mgr. getCCDBAccessor () .storeAsTFileAny (&body, path, meta, s, e);
380370
381- auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
382371 mgr.clearCache ();
383372 mgr.setCaching (true );
384373 long ts = (s + e) / 2 ;
@@ -398,17 +387,16 @@ BOOST_AUTO_TEST_CASE(FirstCallWithoutHeadersThenWithHeaders)
398387 BOOST_TEST (h2.count (" Valid-Until" ) == 1 );
399388}
400389
401- BOOST_AUTO_TEST_CASE (HeadersAreStableAcrossMultipleHits)
390+ BOOST_AUTO_TEST_CASE (HeadersAreStableAcrossMultipleHits, * boost::unit_test::precondition (if_reachable()) )
402391{
403- test_fixture f;
404392
393+ auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
405394 std::string path = basePath + " StableHeaders" ;
406395 std::string body = " Stable" ;
407396 std::map<std::string, std::string> meta{{" HK" , " HV" }};
408397 long s = 500'000 , e = 510'000 ;
409- f. api .storeAsTFileAny (&body, path, meta, s, e);
398+ mgr. getCCDBAccessor () .storeAsTFileAny (&body, path, meta, s, e);
410399
411- auto & mgr = o2::ccdb::BasicCCDBManager::instance ();
412400 mgr.clearCache ();
413401 mgr.setCaching (true );
414402 long ts = (s + e) / 2 ;
0 commit comments