New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for the TrackDependency method of Telemetry Client #24

merged 2 commits into from Feb 23, 2017


None yet
3 participants

artberri commented Feb 22, 2017

This PR adds support for the TrackDependency method of the Client, and includes:

  • Fixed Unit Test due to PhpUnit library update
  • Refactor of Contracts to avoid repeated code.
  • Added trackDependency method to the Telemetry Client.
  • Unit Test added for the trackDependency method.
  • updated with examples of the new method.
composer install
php vendor/bin/phpunit ./ApplicationInsights/Tests 
PHPUnit 4.8.35 by Sebastian Bergmann and contributors.


Time: 160 ms, Memory: 6.00MB

OK (25 tests, 54 assertions)

Related: #18

Let me know if there is something wrong or if I need to fix something to get this merged.

PD. I have needed to review other language SDKs in order to be able to build this. Is there any proper documentation about every available method and parameters when tracking with AppInsights?


This comment has been minimized.


JakubOleksy commented Feb 23, 2017

Looks good to me. i don't have a setup anymore to test this. I assume you confirmed that with these changes all the data still flows to Application Insights?


This comment has been minimized.


artberri commented Feb 23, 2017

Yes, we are already using our branch.

Here you have a functional test just in case:


require __DIR__ . '/vendor/autoload.php';

$telemetryClient = new \ApplicationInsights\Telemetry_Client();

$telemetryClient->trackEvent('everythingstillok', ['MyCustomProperty' => 42, 'MyCustomProperty2' => 'test'], ['duration' => 42]);
$telemetryClient->trackPageView('everythingstillok', '');
$telemetryClient->trackPageView('everythingstillok', '', 256, ['InlineProperty' => 'test_value'], ['duration' => 42.0]);
$telemetryClient->trackMetric('everythingstillok', 42.0);
$telemetryClient->trackMetric('everythingstillok', 42.0, \ApplicationInsights\Channel\Contracts\Data_Point_Type::Aggregation, 5, 0, 1, 0.2, ['InlineProperty' => 'test_value']);
$telemetryClient->trackMessage('everythingstillok', ['InlineProperty' => 'test_value']);
$telemetryClient->trackRequest('everythingstillok', '', time());
$telemetryClient->trackRequest('everythingstillok', '', time(), 3754, 200, true, ['InlineProperty' => 'test_value'], ['duration_inner' => 42.0]);
$telemetryClient->trackException(new \Exception('everythingstillok'), ['InlineProperty' => 'test_value'], ['duration_inner' => 42.0]);
$telemetryClient->trackDependency('SQL everythingstillok', \ApplicationInsights\Channel\Contracts\Dependency_Type::SQL, 'SELECT * FROM hola;', time(), 100, true, 200, true);
$telemetryClient->trackDependency('', \ApplicationInsights\Channel\Contracts\Dependency_Type::HTTP, null, time(), 100, false, 400, false);
$telemetryClient->trackDependency('OTHER everythingstillok', \ApplicationInsights\Channel\Contracts\Dependency_Type::OTHER, 'Other text', time(), 100, true);


Once it is merged, could you bump a new version (0.4.0 I guess) so we can reference it in other projects?

I have done this Symfony integration and I need it in order to bump a new version also:

Thank you in advance.

PD. Stil... Is there no doc about the API? :D

@JakubOleksy JakubOleksy merged commit a1fd851 into Microsoft:master Feb 23, 2017


This comment has been minimized.


artberri commented Feb 24, 2017

@JakubOleksy Could you bumb a new version (push a new tag to the repo)? -> 0.4.0

This is needed to add this library as a dependency to other project using Composer.


This comment has been minimized.


gardnerjr commented Feb 24, 2017

This looks like it is the "old" schema for dependencies? at a quick glance, i see "kind" and all that stuff, instead of user defined "type" and new fields documented here:

i don't think there's anything "wrong" with using the old schema, it just isn't as flexible as the new one.

i think the closest thing to docs about the schema are those bond files:

most of the c# code is generated from those bond files, is there a php way to generate those too?


This comment has been minimized.


JakubOleksy commented Feb 25, 2017

Ok, bumped the version. Should be all set? Let me know.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment