blob: 17f933cbb37b499e5b88a8603e4a5872eb1a7cda [file] [log] [blame]
Darin Petkov65b01462010-04-14 13:32:20 -07001// Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Darin Petkov4fcb2ac2010-04-15 16:40:23 -07005#include <cstdio>
Darin Petkov65b01462010-04-14 13:32:20 -07006#include <cstdlib>
Darin Petkov65b01462010-04-14 13:32:20 -07007
8#include "metrics_library.h"
9
Darin Petkov65b01462010-04-14 13:32:20 -070010// Usage: metrics_client [-ab] metric_name metric_value
11int main(int argc, char** argv) {
12 bool send_to_autotest = false;
13 bool send_to_chrome = true;
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070014 bool secs_to_msecs = false;
Darin Petkov65b01462010-04-14 13:32:20 -070015 int metric_name_index = 1;
16 int metric_value_index = 2;
17 bool print_usage = false;
18
19 if (argc >= 3) {
20 // Parse arguments
21 int flag;
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070022 while ((flag = getopt(argc, argv, "abt")) != -1) {
Darin Petkov65b01462010-04-14 13:32:20 -070023 switch (flag) {
24 case 'a':
25 send_to_autotest = true;
26 send_to_chrome = false;
27 break;
28 case 'b':
29 send_to_chrome = true;
30 send_to_autotest = true;
31 break;
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070032 case 't':
33 secs_to_msecs = true;
34 break;
Darin Petkov65b01462010-04-14 13:32:20 -070035 default:
36 print_usage = true;
37 break;
38 }
39 }
40 metric_name_index = optind;
41 metric_value_index = optind + 1;
42 } else {
43 print_usage = true;
44 }
45
46 // Metrics value should be the last argument passed
47 if ((metric_value_index + 1) != argc) {
48 print_usage = true;
49 }
50
51 if (print_usage) {
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070052 fprintf(stderr,
53 "Usage: metrics_client [-abt] name value\n"
54 "\n"
55 " default: send metric with integer value to chrome only\n"
56 " -a: send metric to autotest only\n"
57 " -b: send metric to both chrome and autotest\n"
58 " -t: convert value from float seconds to int milliseconds\n");
Darin Petkov65b01462010-04-14 13:32:20 -070059 return 1;
60 }
61
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070062 const char* name = argv[metric_name_index];
63 int value;
64 if (secs_to_msecs) {
65 float secs = strtof(argv[metric_value_index], NULL);
66 value = static_cast<int>(secs * 1000.0f);
67 } else {
68 value = atoi(argv[metric_value_index]);
69 }
70
Darin Petkov65b01462010-04-14 13:32:20 -070071 // Send metrics
72 if (send_to_autotest) {
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070073 MetricsLibrary::SendToAutotest(name, value);
Darin Petkov65b01462010-04-14 13:32:20 -070074 }
75 if (send_to_chrome) {
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070076 MetricsLibrary::SendToChrome(name, value);
Darin Petkov65b01462010-04-14 13:32:20 -070077 }
78 return 0;
79}