From b05ab59b048764bd373f7624ce7fde4cb0fb30df Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Wed, 25 Oct 2023 20:55:25 +0200
Subject: [PATCH] TST: update tests for server release 0.12.0

---
 test/test_async.cpp       | 18 ++++++++++++------
 test/test_select.cpp      |  4 +---
 test/test_transaction.cpp |  2 --
 3 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/test/test_async.cpp b/test/test_async.cpp
index c804986..bf437f6 100644
--- a/test/test_async.cpp
+++ b/test/test_async.cpp
@@ -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();
 
diff --git a/test/test_select.cpp b/test/test_select.cpp
index f880954..fa63eef 100644
--- a/test/test_select.cpp
+++ b/test/test_select.cpp
@@ -363,9 +363,7 @@ TEST_F(test_select, test_select_property_unit) {
   EXPECT_EQ(query_transaction->GetResultTable().size(), 1);
   for (const auto &row : query_transaction->GetResultTable().GetRows()) {
 
-    // Fails due to https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/264
-    EXPECT_NONFATAL_FAILURE({ EXPECT_EQ(row.GetValue("TestPropDouble.unit").GetAsString(), "m"); },
-                            "TestPropDouble.unit");
+    EXPECT_EQ(row.GetValue("TestPropDouble.unit").GetAsString(), "m");
   }
 }
 
diff --git a/test/test_transaction.cpp b/test/test_transaction.cpp
index aff1c6e..2b1be4c 100644
--- a/test/test_transaction.cpp
+++ b/test/test_transaction.cpp
@@ -1342,11 +1342,9 @@ TEST_F(test_transaction, test_delete_string_id) {
   EXPECT_TRUE(transaction->GetStatus().IsTerminated());
   EXPECT_TRUE(transaction->GetStatus().IsError());
   const auto &results = transaction->GetResultSet();
-  EXPECT_FALSE(results.at(0).HasErrors());
   EXPECT_TRUE(results.at(1).HasErrors());
   EXPECT_EQ(results.at(1).GetErrors().size(), 1);
   EXPECT_EQ(results.at(1).GetErrors().at(0).GetDescription(), "Entity does not exist.");
-  EXPECT_FALSE(results.at(2).HasErrors());
 }
 
 } // namespace caosdb::transaction
-- 
GitLab