Skip to content

Commit c843af8

Browse files
isapegoMmuzaf
authored andcommitted
IGNITE-14204 Fix C++ thin transactions
This closes #8836
1 parent 41efe1f commit c843af8

12 files changed

Lines changed: 386 additions & 319 deletions

File tree

modules/platforms/cpp/thin-client-test/src/tx_test.cpp

Lines changed: 61 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,33 @@ class IgniteTxTestSuiteFixture
3939
public:
4040
IgniteTxTestSuiteFixture()
4141
{
42-
serverNode = ignite_test::StartCrossPlatformServerNode("cache.xml", "ServerNode");
42+
node1 = ignite_test::StartCrossPlatformServerNode("cache.xml", "node1");
43+
node2 = ignite_test::StartCrossPlatformServerNode("cache.xml", "node2");
4344
}
4445

4546
~IgniteTxTestSuiteFixture()
4647
{
4748
ignite::Ignition::StopAll(false);
4849
}
4950

51+
/**
52+
* Start client.
53+
*/
54+
static IgniteClient StartClient()
55+
{
56+
IgniteClientConfiguration cfg;
57+
58+
cfg.SetEndPoints("127.0.0.1:11110,127.0.0.1:11111");
59+
60+
return IgniteClient::Start(cfg);
61+
}
62+
5063
private:
51-
/** Server node. */
52-
ignite::Ignite serverNode;
64+
/** Server node #1. */
65+
ignite::Ignite node1;
66+
67+
/** Server node #2. */
68+
ignite::Ignite node2;
5369
};
5470

5571
BOOST_FIXTURE_TEST_SUITE(IgniteTxTestSuite, IgniteTxTestSuiteFixture)
@@ -75,11 +91,7 @@ bool checkTxTimeoutMessage(const ignite::IgniteError& ex)
7591

7692
BOOST_AUTO_TEST_CASE(TestCacheOpsWithTx)
7793
{
78-
IgniteClientConfiguration cfg;
79-
80-
cfg.SetEndPoints("127.0.0.1:11110");
81-
82-
IgniteClient client = IgniteClient::Start(cfg);
94+
IgniteClient client = StartClient();
8395

8496
cache::CacheClient<int, int> cache =
8597
client.GetCache<int, int>("partitioned");
@@ -190,7 +202,7 @@ BOOST_AUTO_TEST_CASE(TestCacheOpsWithTx)
190202

191203
tx.Rollback();
192204

193-
BOOST_CHECK_EQUAL(cache.GetSize(cache::CachePeekMode::ALL), 1);
205+
BOOST_CHECK_EQUAL(cache.GetSize(cache::CachePeekMode::PRIMARY), 1);
194206

195207
//---
196208

@@ -241,11 +253,7 @@ BOOST_AUTO_TEST_CASE(TestCacheOpsWithTx)
241253

242254
void startAnotherClientAndTx(SharedPointer<SingleLatch>& l)
243255
{
244-
IgniteClientConfiguration cfg;
245-
246-
cfg.SetEndPoints("127.0.0.1:11110");
247-
248-
IgniteClient client = IgniteClient::Start(cfg);
256+
IgniteClient client = IgniteTxTestSuiteFixture::StartClient();
249257

250258
cache::CacheClient<int, int> cache =
251259
client.GetCache<int, int>("partitioned");
@@ -263,11 +271,7 @@ void startAnotherClientAndTx(SharedPointer<SingleLatch>& l)
263271

264272
BOOST_AUTO_TEST_CASE(TestTxOps)
265273
{
266-
IgniteClientConfiguration cfg;
267-
268-
cfg.SetEndPoints("127.0.0.1:11110");
269-
270-
IgniteClient client = IgniteClient::Start(cfg);
274+
IgniteClient client = StartClient();
271275

272276
cache::CacheClient<int, int> cache =
273277
client.GetCache<int, int>("partitioned");
@@ -347,11 +351,7 @@ bool checkTxLabel1Message(const ignite::IgniteError& ex)
347351

348352
BOOST_AUTO_TEST_CASE(TestTxWithLabel)
349353
{
350-
IgniteClientConfiguration cfg;
351-
352-
cfg.SetEndPoints("127.0.0.1:11110");
353-
354-
IgniteClient client = IgniteClient::Start(cfg);
354+
IgniteClient client = StartClient();
355355

356356
cache::CacheClient<int, int> cache =
357357
client.GetCache<int, int>("partitioned");
@@ -397,4 +397,41 @@ BOOST_AUTO_TEST_CASE(TestTxWithLabel)
397397
tx.Close();
398398
}
399399

400+
BOOST_AUTO_TEST_CASE(ManyTransactions)
401+
{
402+
IgniteClient client = StartClient();
403+
404+
cache::CacheClient<int, int> cache =
405+
client.GetCache<int, int>("partitioned");
406+
407+
transactions::ClientTransactions transactions = client.ClientTransactions();
408+
const int32_t key = 42;
409+
410+
for (int32_t val = 0; val < 100; ++val) {
411+
transactions::ClientTransaction tx = transactions.TxStart();
412+
413+
cache.Put(key, val);
414+
415+
tx.Commit();
416+
417+
BOOST_CHECK_EQUAL(val, cache.Get(key));
418+
}
419+
420+
const int32_t expected = -42;
421+
422+
cache.Put(key, expected);
423+
424+
BOOST_CHECK_EQUAL(expected, cache.Get(key));
425+
426+
for (int32_t val = 0; val < 100; ++val) {
427+
transactions::ClientTransaction tx = transactions.TxStart();
428+
429+
cache.Put(key, val);
430+
431+
tx.Rollback();
432+
433+
BOOST_CHECK_EQUAL(expected, cache.Get(key));
434+
}
435+
}
436+
400437
BOOST_AUTO_TEST_SUITE_END()

modules/platforms/cpp/thin-client/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ set(SOURCES src/impl/data_channel.cpp
3434
src/impl/message.cpp
3535
src/impl/cache/cache_client_proxy.cpp
3636
src/impl/cache/cache_client_impl.cpp
37+
src/impl/transactions/transaction_impl.cpp
3738
src/impl/transactions/transactions_impl.cpp
3839
src/impl/transactions/transactions_proxy.cpp
3940
src/ignite_client.cpp

modules/platforms/cpp/thin-client/project/vs/thin-client.vcxproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@
169169
<ClCompile Include="..\..\src\impl\protocol_version.cpp" />
170170
<ClCompile Include="..\..\src\impl\remote_type_updater.cpp" />
171171
<ClCompile Include="..\..\src\impl\utility.cpp" />
172+
<ClCompile Include="..\..\src\impl\transactions\transaction_impl.cpp" />
172173
<ClCompile Include="..\..\src\impl\transactions\transactions_impl.cpp" />
173174
<ClCompile Include="..\..\src\impl\transactions\transactions_proxy.cpp" />
174175
</ItemGroup>

modules/platforms/cpp/thin-client/project/vs/thin-client.vcxproj.filters

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,15 @@
6666
</ClCompile>
6767
<ClCompile Include="..\..\src\impl\affinity\affinity_manager.cpp">
6868
<Filter>Code\impl\affinity</Filter>
69+
</ClCompile>
70+
<ClCompile Include="..\..\src\impl\transactions\transaction_impl.cpp">
71+
<Filter>Code\impl\transactions</Filter>
72+
</ClCompile>
73+
<ClCompile Include="..\..\src\impl\transactions\transactions_impl.cpp">
74+
<Filter>Code\impl\transactions</Filter>
75+
</ClCompile>
76+
<ClCompile Include="..\..\src\impl\transactions\transactions_proxy.cpp">
77+
<Filter>Code\impl\transactions</Filter>
6978
</ClCompile>
7079
</ItemGroup>
7180
<ItemGroup>
@@ -174,5 +183,20 @@
174183
<ClInclude Include="..\..\src\impl\affinity\partition_awareness_group.h">
175184
<Filter>Code\impl\affinity</Filter>
176185
</ClInclude>
186+
<ClInclude Include="..\..\include\ignite\thin\transactions\transactions.h">
187+
<Filter>Code\transactions</Filter>
188+
</ClInclude>
189+
<ClInclude Include="..\..\include\ignite\thin\transactions\transaction.h">
190+
<Filter>Code\transactions</Filter>
191+
</ClInclude>
192+
<ClInclude Include="..\..\include\ignite\thin\transactions\transaction_consts.h">
193+
<Filter>Code\transactions</Filter>
194+
</ClInclude>
195+
<ClInclude Include="..\..\include\ignite\thin\transactions\transactions_proxy.h">
196+
<Filter>Code\transactions</Filter>
197+
</ClInclude>
198+
<ClInclude Include="..\..\src\impl\transactions\transactions_impl.h">
199+
<Filter>Code\impl\transactions</Filter>
200+
</ClInclude>
177201
</ItemGroup>
178202
</Project>

0 commit comments

Comments
 (0)