}
}
+ public function testHashRingSingleLocation() {
+ // SHA-1 based and weighted
+ $ring = new HashRing( [ 's1' => 1 ], 'sha1' );
+
+ $this->assertEquals(
+ [ 's1' => 1 ],
+ $ring->getLocationWeights(),
+ 'Normalized location weights'
+ );
+
+ for ( $i = 0; $i < 5; $i++ ) {
+ $this->assertEquals(
+ 's1',
+ $ring->getLocation( "hello$i" ),
+ 'Items placed at proper locations'
+ );
+ $this->assertEquals(
+ [ 's1' ],
+ $ring->getLocations( "hello$i", 2 ),
+ 'Items placed at proper locations'
+ );
+ }
+
+ $this->assertEquals( [], $ring->getLocations( "helloX", 0 ), "Limit of 0" );
+ }
+
public function testHashRingMapping() {
// SHA-1 based and weighted
$ring = new HashRing(
// Hash of known correct values from C code
$this->assertEquals(
- 'c69ac9eb7a8a630c0cded201cefeaace',
- md5( $ketama_test( 1e5 ) ),
+ 'd1a4912a80e4654ec2e4e462c8b911c6',
+ md5( $ketama_test( 1e3 ) ),
'Ketama mode (large, MD5 check)'
);