1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
<?php
namespace Basho\Tests;
use Basho\Riak\Command;
/**
* Class CounterTest
*
* Functional tests related to Counter CRDTs
*
* @author Christopher Mancini <cmancini at basho d0t com>
*/
class CounterOperationsTest extends TestCase
{
private static $key = '';
public static function setUpBeforeClass()
{
parent::setUpBeforeClass();
// make completely random key based on time
static::$key = md5(rand(0, 99) . time());
}
public function testIncrementNewWithoutKey()
{
// build an object
$command = (new Command\Builder\IncrementCounter(static::$riak))
->withIncrement(1)
->buildBucket('visits', static::COUNTER_BUCKET_TYPE)
->build();
$response = $command->execute();
// expects 201 - Created
$this->assertEquals('201', $response->getCode());
$this->assertNotEmpty($response->getLocation());
}
public function testFetchNotFound()
{
$command = (new Command\Builder\FetchCounter(static::$riak))
->buildLocation(static::$key, 'visits', static::COUNTER_BUCKET_TYPE)
->build();
$response = $command->execute();
$this->assertEquals('404', $response->getCode());
}
/**
* @depends testFetchNotFound
*/
public function testIncrementNewWithKey()
{
$command = (new Command\Builder\IncrementCounter(static::$riak))
->withIncrement(1)
->buildLocation(static::$key, 'visits', static::COUNTER_BUCKET_TYPE)
->build();
$response = $command->execute();
// expects 204 - No Content
// this is wonky, its not 201 because the key may have been generated on another node
$this->assertEquals('204', $response->getCode());
$this->assertEmpty($response->getLocation());
}
/**
* @depends testIncrementNewWithKey
*/
public function testFetchOk()
{
$command = (new Command\Builder\FetchCounter(static::$riak))
->buildLocation(static::$key, 'visits', static::COUNTER_BUCKET_TYPE)
->build();
$response = $command->execute();
$this->assertEquals('200', $response->getCode());
$this->assertInstanceOf('Basho\Riak\DataType\Counter', $response->getCounter());
$this->assertNotEmpty($response->getCounter()->getData());
$this->assertTrue(is_integer($response->getCounter()->getData()));
$this->assertEquals(1, $response->getCounter()->getData());
}
/**
* @depends testFetchOk
*/
public function testIncrementExisting()
{
$command = (new Command\Builder\IncrementCounter(static::$riak))
->withIncrement(1)
->buildLocation(static::$key, 'visits', static::COUNTER_BUCKET_TYPE)
->build();
$response = $command->execute();
// 204 - No Content
$this->assertEquals('204', $response->getCode());
}
/**
* @depends testIncrementExisting
*/
public function testFetchOk2()
{
$command = (new Command\Builder\FetchCounter(static::$riak))
->buildLocation(static::$key, 'visits', static::COUNTER_BUCKET_TYPE)
->build();
$response = $command->execute();
$this->assertEquals('200', $response->getCode());
$this->assertInstanceOf('Basho\Riak\DataType\Counter', $response->getCounter());
$this->assertNotEmpty($response->getCounter()->getData());
$this->assertTrue(is_integer($response->getCounter()->getData()));
$this->assertEquals(2, $response->getCounter()->getData());
}
/**
* @depends testFetchOk
*/
public function testDecrementExisting()
{
$command = (new Command\Builder\IncrementCounter(static::$riak))
->withIncrement(-1)
->buildLocation(static::$key, 'visits', static::COUNTER_BUCKET_TYPE)
->build();
$response = $command->execute();
// 204 - No Content
$this->assertEquals('204', $response->getCode());
}
/**
* @depends testDecrementExisting
*/
public function testFetchOk3()
{
$command = (new Command\Builder\FetchCounter(static::$riak))
->buildLocation(static::$key, 'visits', static::COUNTER_BUCKET_TYPE)
->build();
$response = $command->execute();
$this->assertEquals('200', $response->getCode());
$this->assertInstanceOf('Basho\Riak\DataType\Counter', $response->getCounter());
$this->assertNotEmpty($response->getCounter()->getData());
$this->assertTrue(is_integer($response->getCounter()->getData()));
$this->assertEquals(1, $response->getCounter()->getData());
}
}
|