Merge "SpecialNewFiles: Swap from/to date serverside"
[lhc/web/wiklou.git] / tests / phpunit / includes / libs / SamplingStatsdClientTest.php
index be6732d..c5bc03e 100644 (file)
@@ -1,13 +1,14 @@
 <?php
 
 use Liuggio\StatsdClient\Entity\StatsdData;
+use Liuggio\StatsdClient\Sender\SenderInterface;
 
 class SamplingStatsdClientTest extends PHPUnit_Framework_TestCase {
        /**
         * @dataProvider samplingDataProvider
         */
        public function testSampling( $data, $sampleRate, $seed, $expectWrite ) {
-               $sender = $this->getMock( 'Liuggio\StatsdClient\Sender\SenderInterface' );
+               $sender = $this->getMockBuilder( SenderInterface::class )->getMock();
                $sender->expects( $this->any() )->method( 'open' )->will( $this->returnValue( true ) );
                if ( $expectWrite ) {
                        $sender->expects( $this->once() )->method( 'write' )
@@ -30,14 +31,37 @@ class SamplingStatsdClientTest extends PHPUnit_Framework_TestCase {
                $sampled->setValue( 1 );
                $sampled->setSampleRate( '0.1' );
 
-               return array(
+               return [
                        // $data, $sampleRate, $seed, $expectWrite
-                       array( $unsampled, 1, 0 /*0.44*/, $unsampled ),
-                       array( $sampled, 1, 0 /*0.44*/, null ),
-                       array( $sampled, 1, 4 /*0.03*/, $sampled ),
-                       array( $unsampled, 0.1, 4 /*0.03*/, $sampled ),
-                       array( $sampled, 0.5, 0 /*0.44*/, null ),
-                       array( $sampled, 0.5, 4 /*0.03*/, $sampled ),
-               );
+                       [ $unsampled, 1, 0 /*0.44*/, true ],
+                       [ $sampled, 1, 0 /*0.44*/, false ],
+                       [ $sampled, 1, 4 /*0.03*/, true ],
+                       [ $unsampled, 0.1, 0 /*0.44*/, false ],
+                       [ $sampled, 0.5, 0 /*0.44*/, false ],
+                       [ $sampled, 0.5, 4 /*0.03*/, false ],
+               ];
+       }
+
+       public function testSetSamplingRates() {
+               $matching = new StatsdData();
+               $matching->setKey( 'foo.bar' );
+               $matching->setValue( 1 );
+
+               $nonMatching = new StatsdData();
+               $nonMatching->setKey( 'oof.bar' );
+               $nonMatching->setValue( 1 );
+
+               $sender = $this->getMockBuilder( SenderInterface::class )->getMock();
+               $sender->expects( $this->any() )->method( 'open' )->will( $this->returnValue( true ) );
+               $sender->expects( $this->once() )->method( 'write' )->with( $this->anything(),
+                       $this->equalTo( $nonMatching ) );
+
+               $client = new SamplingStatsdClient( $sender );
+               $client->setSamplingRates( [ 'foo.*' => 0.2 ] );
+
+               mt_srand( 0 ); // next random is 0.44
+               $client->send( $matching );
+               mt_srand( 0 );
+               $client->send( $nonMatching );
        }
 }