-#define SQUID_UNIT_TEST 1
-#include "squid.h"
+/*
+ * Copyright (C) 1996-2020 The Squid Software Foundation and contributors
+ *
+ * Squid software is distributed under GPLv2+ license and includes
+ * contributions from numerous individuals and organizations.
+ * Please see the COPYING and CONTRIBUTORS files for details.
+ */
+#include "squid.h"
#include "DiskIO/DiskIOModule.h"
#include "fs/ufs/UFSSwapDir.h"
#include "globals.h"
#include "HttpHeader.h"
#include "HttpReply.h"
-#include "Mem.h"
#include "MemObject.h"
#include "RequestFlags.h"
#include "SquidConfig.h"
#include "Store.h"
-#include "SwapDir.h"
+#include "store/Disks.h"
#include "testStoreSupport.h"
#include "testUfs.h"
+#include "unitTestMain.h"
-#if HAVE_STDEXCEPT
#include <stdexcept>
-#endif
#define TESTDIR "testUfs_Store"
CPPUNIT_TEST_SUITE_REGISTRATION( testUfs );
-typedef RefCount<Fs::Ufs::UFSSwapDir> SwapDirPointer;
-extern REMOVALPOLICYCREATE createRemovalPolicy_lru; /* XXX fails with --enable-removal-policies=heap */
+typedef RefCount<Fs::Ufs::UFSSwapDir> MySwapDirPointer;
+extern REMOVALPOLICYCREATE createRemovalPolicy_lru; /* XXX fails with --enable-removal-policies=heap */
static void
-addSwapDir(SwapDirPointer aStore)
+addSwapDir(MySwapDirPointer aStore)
{
allocate_new_swapdir(&Config.cacheSwap);
Config.cacheSwap.swapDirs[Config.cacheSwap.n_configured] = aStore.getRaw();
Config.replPolicy = new RemovalPolicySettings;
Config.replPolicy->type = xstrdup("lru");
+ Config.memShared.defaultTo(false);
+
/* garh garh */
storeReplAdd("lru", createRemovalPolicy_lru);
comm_init();
- httpHeaderInitModule(); /* must go before any header processing (e.g. the one in errorInitialize) */
-
- httpReplyInitModule(); /* must go before accepting replies */
+ httpHeaderInitModule(); /* must go before any header processing (e.g. the one in errorInitialize) */
inited = true;
}
if (0 > system ("rm -rf " TESTDIR))
throw std::runtime_error("Failed to clean test work directory");
- Store::Root(new StoreController);
+ Store::Init();
- SwapDirPointer aStore (new Fs::Ufs::UFSSwapDir("ufs", "Blocking"));
+ MySwapDirPointer aStore (new Fs::Ufs::UFSSwapDir("ufs", "Blocking"));
aStore->IO = new Fs::Ufs::UFSStrategy(DiskIOModule::Find("Blocking")->createStrategy());
RequestFlags flags;
flags.cachable = true;
StoreEntry *pe = storeCreateEntry("dummy url", "dummy log url", flags, Http::METHOD_GET);
- HttpReply *rep = (HttpReply *) pe->getReply(); // bypass const
- rep->setHeaders(Http::scOkay, "dummy test object", "x-squid-internal/test", 0, -1, squid_curtime + 100000);
+ auto &reply = pe->mem().adjustableBaseReply();
+ reply.setHeaders(Http::scOkay, "dummy test object", "x-squid-internal/test", 0, -1, squid_curtime + 100000);
pe->setPublicKey();
pe->buffer();
- /* TODO: remove this when the metadata is separated */
- {
- Packer p;
- packerToStoreInit(&p, pe);
- pe->getReply()->packHeadersInto(&p);
- packerClean(&p);
- }
-
+ pe->mem().freshestReply().packHeadersUsingSlowPacker(*pe);
pe->flush();
pe->timestampsSet();
pe->complete();
/* here we cheat: we know that UFSSwapDirs search off disk. If we did an init call to a new
* swapdir instance, we'd not be testing a clean build.
*/
- StoreSearchPointer search = aStore->search (NULL, NULL); /* search for everything in the store */
+ StoreSearchPointer search = Store::Root().search(); /* search for everything in the store */
/* nothing should be immediately available */
#if 0
CPPUNIT_ASSERT_EQUAL(true, search->isDone());
CPPUNIT_ASSERT_EQUAL(static_cast<StoreEntry *>(NULL), search->currentItem());
- Store::Root(NULL);
+ Store::FreeMemory();
free_cachedir(&Config.cacheSwap);
// objects such as "StorePointer aRoot" from being called.
CPPUNIT_ASSERT(!store_table); // or StoreHashIndex ctor will abort below
- Store::Root(new StoreController);
- SwapDirPointer aStore (new Fs::Ufs::UFSSwapDir("ufs", "Blocking"));
+ Store::Init();
+ MySwapDirPointer aStore (new Fs::Ufs::UFSSwapDir("ufs", "Blocking"));
addSwapDir(aStore);
commonInit();
Config.replPolicy = new RemovalPolicySettings;
safe_free(config_line);
CPPUNIT_ASSERT(aStore->IO->io != NULL);
- Store::Root(NULL);
+ Store::FreeMemory();
free_cachedir(&Config.cacheSwap);
safe_free(Config.replPolicy->type);
delete Config.replPolicy;
if (0 > system ("rm -rf " TESTDIR))
throw std::runtime_error("Failed to clean test work directory");
}
+