greenplumn CTaskLocalStorageTest 源码

  • 2022-08-18
  • 浏览 (277)

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 源码

0  赞