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