Add /Atomic/DoAppendIfFits unit test
This commit is contained in:
parent
aaefc434ea
commit
2bea5b88bf
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* Atomic.cpp
|
||||
*
|
||||
* This source file is part of the FoundationDB open source project
|
||||
*
|
||||
* Copyright 2013-2022 Apple Inc. and the FoundationDB project authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "fdbclient/Atomic.h"
|
||||
#include "flow/Arena.h"
|
||||
#include "flow/UnitTest.h"
|
||||
|
||||
void forceLinkAtomicTests() {}
|
||||
|
||||
TEST_CASE("/Atomic/DoAppendIfFits") {
|
||||
Arena arena;
|
||||
{
|
||||
Value existingValue = ValueRef(arena, "existing"_sr);
|
||||
Value otherOperand = ValueRef(arena, "other"_sr);
|
||||
auto result = doAppendIfFits(existingValue, otherOperand, arena);
|
||||
ASSERT(compare("existingother"_sr, result) == 0);
|
||||
}
|
||||
{
|
||||
Value existingValue = makeString(CLIENT_KNOBS->VALUE_SIZE_LIMIT - 1, arena);
|
||||
Value otherOperand = makeString(2, arena);
|
||||
// Appended values cannot fit in result, should return existingValue
|
||||
auto result = doAppendIfFits(existingValue, otherOperand, arena);
|
||||
ASSERT(compare(existingValue, result) == 0);
|
||||
}
|
||||
return Void();
|
||||
}
|
||||
|
||||
// TODO: Add more unit tests for atomic operations defined in Atomic.h
|
|
@ -120,7 +120,7 @@ inline ValueRef doAppendIfFits(const Optional<ValueRef>& existingValueOptional,
|
|||
if (!otherOperand.size())
|
||||
return existingValue;
|
||||
if (existingValue.size() + otherOperand.size() > CLIENT_KNOBS->VALUE_SIZE_LIMIT) {
|
||||
CODE_PROBE(true, "AppendIfFIts resulted in truncation");
|
||||
CODE_PROBE(true, "AppendIfFits resulted in truncation");
|
||||
return existingValue;
|
||||
}
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@ void forceLinkRESTClientTests();
|
|||
void forceLinkRESTUtilsTests();
|
||||
void forceLinkRESTKmsConnectorTest();
|
||||
void forceLinkCompressionUtilsTest();
|
||||
void forceLinkAtomicTests();
|
||||
|
||||
struct UnitTestWorkload : TestWorkload {
|
||||
bool enabled;
|
||||
|
@ -85,7 +86,7 @@ struct UnitTestWorkload : TestWorkload {
|
|||
forceLinkMemcpyTests();
|
||||
forceLinkMemcpyPerfTests();
|
||||
forceLinkStreamCipherTests();
|
||||
void forceLinkBlobCipherTests();
|
||||
forceLinkBlobCipherTests();
|
||||
forceLinkParallelStreamTests();
|
||||
forceLinkSimExternalConnectionTests();
|
||||
forceLinkMutationLogReaderTests();
|
||||
|
@ -98,6 +99,7 @@ struct UnitTestWorkload : TestWorkload {
|
|||
forceLinkRESTUtilsTests();
|
||||
forceLinkRESTKmsConnectorTest();
|
||||
forceLinkCompressionUtilsTest();
|
||||
forceLinkAtomicTests();
|
||||
}
|
||||
|
||||
std::string description() const override { return "UnitTests"; }
|
||||
|
|
Loading…
Reference in New Issue