Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • caosdb/src/caosdb-cppinttest
1 result
Show changes
Commits on Source (8)
......@@ -15,7 +15,8 @@ RUN rm -rf .git
COPY .docker/caosdb-client.json /caosdb-client.json
# build and run tests
# Build and run tests.
# If no other command is given to the Docker image
CMD mkdir build && \
cd build && \
conan install .. -s "compiler.libcxx=libstdc++11" && \
......
......@@ -78,16 +78,12 @@ build-testenv: &build-testenv
stage: setup
timeout: 2h
needs: []
only:
- pipelines
- schedules
- web
script:
- *env
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
#build testenv image
- docker pull $CPPLIB_REGISTRY_IMAGE || { CPPLIB_REGISTRY_IMAGE="$CI_REGISTRY/caosdb/src/caosdb-cpplib/testenv:dev" ; docker pull $CPPLIB_REGISTRY_IMAGE ; }
- docker pull $CPPLIB_REGISTRY_IMAGE || { CPPLIB_REGISTRY_IMAGE="$CI_REGISTRY/caosdb/src/caosdb-cpplib/testenv:dev" ; echo "Using cpplib@dev instead."; docker pull $CPPLIB_REGISTRY_IMAGE ; }
- docker build
--build-arg CPPLIB_REGISTRY_IMAGE=$CPPLIB_REGISTRY_IMAGE
--file .docker/Dockerfile
......
......@@ -19,4 +19,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
* Fixed failing async test.
### Security
......@@ -53,13 +53,19 @@ TEST(test_async, retrieve_non_existing) {
auto status = transaction->GetStatus();
EXPECT_EQ(status.GetCode(), StatusCode::EXECUTING);
// wait some time
std::this_thread::sleep_for(1000ms);
// 1000ms are not always sufficient, when there is very high pipeline load.
auto count = 1000;
auto code = transaction->GetStatus().GetCode();
do {
// wait some time
std::this_thread::sleep_for(10ms);
// DONT call WaitForIt -> the transaction finishes in the back-ground
status = transaction->GetStatus();
EXPECT_EQ(status.GetCode(), TransactionStatus::TRANSACTION_ERROR().GetCode());
ASSERT_EQ(status.GetCode(), StatusCode::GENERIC_TRANSACTION_ERROR);
// DONT call WaitForIt -> the transaction finishes in the background
code = transaction->GetStatus().GetCode();
} while (--count > 0 && code == StatusCode::EXECUTING);
ASSERT_GT(count, 0) << "ERROR: Timeout while waiting for transaction.";
EXPECT_EQ(code, TransactionStatus::TRANSACTION_ERROR().GetCode());
ASSERT_EQ(code, StatusCode::GENERIC_TRANSACTION_ERROR);
const auto &result_set = transaction->GetResultSet();
......