greenplumn CTaskLocalStorageTest 源码

2022-08-18 浏览 (336)

greenplumn CTaskLocalStorageTest 代码

文件路径:/src/backend/gporca/libgpos/server/src/unittest/gpos/task/CTaskLocalStorageTest.cpp

/---------------------------------------------------------------------------
/	Greenplum Database
/	Copyright (C) 2009 Greenplum, Inc.
/
/	@filename:
/		CTaskLocalStorageTest.cpp
/
/	@doc:
/		Tests for CTaskLocalStorage
/---------------------------------------------------------------------------

#include "unittest/gpos/task/CTaskLocalStorageTest.h"

#include "gpos/common/CSyncHashtableAccessByKey.h"
#include "gpos/task/CAutoTraceFlag.h"
#include "gpos/task/CTask.h"
#include "gpos/task/CTaskLocalStorage.h"
#include "gpos/task/CTaskLocalStorageObject.h"
#include "gpos/task/CTraceFlagIter.h"
#include "gpos/test/CUnittest.h"

using namespace gpos;


/---------------------------------------------------------------------------
/	@function:
/		CTaskLocalStorageTest::EresUnittest
/
/	@doc:
/		Unittest for TLS
/
/---------------------------------------------------------------------------
GPOS_RESULT
CTaskLocalStorageTest::EresUnittest()
{
	CUnittest rgut[] = {
		GPOS_UNITTEST_FUNC(CTaskLocalStorageTest::EresUnittest_Basics),
		GPOS_UNITTEST_FUNC(CTaskLocalStorageTest::EresUnittest_TraceFlags),
	};

	return CUnittest::EresExecute(rgut, GPOS_ARRAY_SIZE(rgut));
}


/---------------------------------------------------------------------------
/	@function:
/		CTaskLocalStorageTest::EresUnittest_Basics
/
/	@doc:
/		Simple store/retrieve test for TLS
/
/---------------------------------------------------------------------------
GPOS_RESULT
CTaskLocalStorageTest::EresUnittest_Basics()
{
	CTestObject tobj;

	/ store object in TLS
	ITask::Self()->GetTls().Store(&tobj);

	/ assert identiy when looking it up
	GPOS_ASSERT(&tobj ==
				ITask::Self()->GetTls().Get(CTaskLocalStorage::EtlsidxTest));

	/ clean out TLS
	ITask::Self()->GetTls().Remove(&tobj);

	return GPOS_OK;
}


/---------------------------------------------------------------------------
/	@function:
/		CTaskLocalStorageTest::EresUnittest_TraceFlags
/
/	@doc:
/		Test trace flag set, retrieve and iterate
/
/---------------------------------------------------------------------------
GPOS_RESULT
CTaskLocalStorageTest::EresUnittest_TraceFlags()
{
	GPOS_ASSERT(!GPOS_FTRACE(EtraceTest));

	GPOS_SET_TRACE(EtraceTest);

	GPOS_ASSERT(GPOS_FTRACE(EtraceTest));

	/ test auto trace flag
	{
		CAutoTraceFlag atf(EtraceTest, false /*value*/);

		GPOS_ASSERT(!GPOS_FTRACE(EtraceTest));
	}
	GPOS_ASSERT(GPOS_FTRACE(EtraceTest));

#ifdef GPOS_DEBUG
	/ test trace flag iterator
	CTraceFlagIter tfi;
	BOOL fFound = false;
	while (tfi.Advance())
	{
		GPOS_ASSERT_IMP(!fFound, EtraceTest == tfi.Bit());
		fFound = true;
	}
#endif	/ GPOS_DEBUG

	GPOS_ASSERT(GPOS_FTRACE(EtraceTest));
	GPOS_UNSET_TRACE(EtraceTest);
	GPOS_ASSERT(!GPOS_FTRACE(EtraceTest));

	return GPOS_OK;
}
/ EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn adminpack 源码

greenplumn verify_nbtree 源码

greenplumn auth_delay 源码

greenplumn auto_explain 源码

greenplumn blcost 源码

greenplumn blinsert 源码

greenplumn bloom 源码

greenplumn blscan 源码

greenplumn blutils 源码

greenplumn blvacuum 源码

^