1
+ <?php namespace DCarbone \PHPConsulAPITests \Usage \KV ;
2
+
3
+ use DCarbone \PHPConsulAPI \Config ;
4
+ use DCarbone \PHPConsulAPI \Consul ;
5
+ use DCarbone \PHPConsulAPI \KV \KVClient ;
6
+ use DCarbone \PHPConsulAPI \KV \KVPair ;
7
+ use DCarbone \PHPConsulAPI \Session \SessionClient ;
8
+ use DCarbone \PHPConsulAPI \Session \SessionEntry ;
9
+ use DCarbone \PHPConsulAPI \WriteMeta ;
10
+ use DCarbone \PHPConsulAPITests \ConsulManager ;
11
+ use PHPUnit \Framework \TestCase ;
12
+
13
+ /**
14
+ * Class KVClientLockTest
15
+ * @package DCarbone\PHPConsulAPITests\Usage\KV
16
+ */
17
+ class KVClientLockTest extends TestCase {
18
+
19
+ protected function setUp () {
20
+ ConsulManager::startSingle ();
21
+ }
22
+
23
+ protected function tearDown () {
24
+ ConsulManager::stopSingle ();
25
+ }
26
+
27
+ public function testAcquireAndRelease () {
28
+ static $ name = 'lockme ' ;
29
+ static $ key = 'lockable ' ;
30
+
31
+ $ conf = new Config ();
32
+ $ kvClient = new KVClient ($ conf );
33
+ $ sessionClient = new SessionClient ($ conf );
34
+
35
+ list ($ id , $ _ , $ err ) = $ sessionClient ->CreateNoChecks (new SessionEntry (['Name ' => $ name ,
36
+ 'TTL ' => '10s ' ,
37
+ 'Behavior ' => Consul::SessionBehaviorDelete]));
38
+ $ this ->assertNull ($ err , sprintf ('Error creating session: %s ' , $ err ));
39
+
40
+ $ kv = new KVPair (['Key ' => $ key , 'Value ' => 'whatever ' , 'Session ' => $ id ]);
41
+ list ($ wm , $ err ) = $ kvClient ->Acquire ($ kv );
42
+ $ this ->assertNull ($ err , sprintf ('Error acquiring lock: %s ' , $ err ));
43
+ $ this ->assertInstanceOf (WriteMeta::class, $ wm );
44
+
45
+ list ($ kv , $ _ , $ err ) = $ kvClient ->Get ($ key );
46
+ $ this ->assertNull ($ err , sprintf ('Error retrieving key: %s ' , $ err ));
47
+ $ this ->assertInstanceOf (KVPair::class, $ kv );
48
+ $ this ->assertEquals ($ id , $ kv ->Session );
49
+ $ this ->assertEquals ('whatever ' , $ kv ->Value );
50
+ }
51
+ }
0 commit comments