@@ -1750,6 +1750,90 @@ public function testDDTags()
17501750 );
17511751 }
17521752
1753+ public function testFilterGlobalTagsCallbackReceivesConfigAndEnvTags ()
1754+ {
1755+ putenv ("DD_VERSION=1.2.3 " );
1756+ putenv ("DD_ENV=prod " );
1757+ putenv ("DD_SERVICE=myService " );
1758+ $ this ->disableOriginDetectionLinux ();
1759+
1760+ $ receivedTags = null ;
1761+ $ dog = new DogStatsd (array (
1762+ 'global_tags ' => array (
1763+ 'my_tag ' => 'tag_value ' ,
1764+ ),
1765+ 'disable_telemetry ' => false ,
1766+ 'filter_global_tags_callback ' => function ($ tags ) use (&$ receivedTags ) {
1767+ $ receivedTags = $ tags ;
1768+ unset($ tags ['env ' ]);
1769+ $ tags ['service ' ] = 'filteredService ' ;
1770+ $ tags ['callback_tag ' ] = 'callback_value ' ;
1771+
1772+ return $ tags ;
1773+ }
1774+ ));
1775+
1776+ $ this ->assertSame (
1777+ array (
1778+ 'my_tag ' => 'tag_value ' ,
1779+ 'env ' => 'prod ' ,
1780+ 'service ' => 'myService ' ,
1781+ 'version ' => '1.2.3 '
1782+ ),
1783+ $ receivedTags
1784+ );
1785+
1786+ $ dog ->timing ('metric ' , 42 , 1.0 );
1787+ $ spy = $ this ->getSocketSpy ();
1788+ $ this ->assertSame (
1789+ 1 ,
1790+ count ($ spy ->argsFromSocketSendtoCalls ),
1791+ 'Should send 1 UDP message '
1792+ );
1793+ $ expectedUdpMessage = 'metric:42|ms|#my_tag:tag_value,service:filteredService,version:1.2.3,callback_tag:callback_value ' ;
1794+ $ argsPassedToSocketSendTo = $ spy ->argsFromSocketSendtoCalls [0 ];
1795+
1796+ $ this ->assertSameWithTelemetry (
1797+ $ expectedUdpMessage ,
1798+ $ argsPassedToSocketSendTo [1 ],
1799+ "" ,
1800+ array ("tags " => "my_tag:tag_value,service:filteredService,version:1.2.3,callback_tag:callback_value " )
1801+ );
1802+ }
1803+
1804+ public function testFilterGlobalTagsCallbackCanRemoveAllTags ()
1805+ {
1806+ putenv ("DD_VERSION=1.2.3 " );
1807+ putenv ("DD_ENV=prod " );
1808+ putenv ("DD_SERVICE=myService " );
1809+ $ this ->disableOriginDetectionLinux ();
1810+
1811+ $ dog = new DogStatsd (array (
1812+ 'global_tags ' => array (
1813+ 'my_tag ' => 'tag_value ' ,
1814+ ),
1815+ 'disable_telemetry ' => false ,
1816+ 'filter_global_tags_callback ' => function ($ tags ) {
1817+ return array ();
1818+ }
1819+ ));
1820+
1821+ $ dog ->timing ('metric ' , 42 , 1.0 );
1822+ $ spy = $ this ->getSocketSpy ();
1823+ $ this ->assertSame (
1824+ 1 ,
1825+ count ($ spy ->argsFromSocketSendtoCalls ),
1826+ 'Should send 1 UDP message '
1827+ );
1828+ $ expectedUdpMessage = 'metric:42|ms ' ;
1829+ $ argsPassedToSocketSendTo = $ spy ->argsFromSocketSendtoCalls [0 ];
1830+
1831+ $ this ->assertSameWithTelemetry (
1832+ $ expectedUdpMessage ,
1833+ $ argsPassedToSocketSendTo [1 ]
1834+ );
1835+ }
1836+
17531837 public function testCardinality ()
17541838 {
17551839 $ dog = new DogStatsd (array ("disable_telemetry " => false ));
0 commit comments