blob: bb676980140197ca6f8cd0aa13b0771321998197 [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 -070010int main(int argc, char** argv) {
11 bool send_to_autotest = false;
12 bool send_to_chrome = true;
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070013 bool secs_to_msecs = false;
Darin Petkovc2526a12010-04-21 14:24:04 -070014 int name_index = 1;
Darin Petkov65b01462010-04-14 13:32:20 -070015 bool print_usage = false;
16
17 if (argc >= 3) {
18 // Parse arguments
19 int flag;
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070020 while ((flag = getopt(argc, argv, "abt")) != -1) {
Darin Petkov65b01462010-04-14 13:32:20 -070021 switch (flag) {
22 case 'a':
23 send_to_autotest = true;
24 send_to_chrome = false;
25 break;
26 case 'b':
27 send_to_chrome = true;
28 send_to_autotest = true;
29 break;
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070030 case 't':
31 secs_to_msecs = true;
32 break;
Darin Petkov65b01462010-04-14 13:32:20 -070033 default:
34 print_usage = true;
35 break;
36 }
37 }
Darin Petkovc2526a12010-04-21 14:24:04 -070038 name_index = optind;
Darin Petkov65b01462010-04-14 13:32:20 -070039 } else {
40 print_usage = true;
41 }
42
Darin Petkovc2526a12010-04-21 14:24:04 -070043 if ((name_index + 5) != argc) {
Darin Petkov65b01462010-04-14 13:32:20 -070044 print_usage = true;
45 }
46
47 if (print_usage) {
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070048 fprintf(stderr,
Darin Petkovc2526a12010-04-21 14:24:04 -070049 "Usage: metrics_client [-abt] name sample min max nbuckets\n"
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070050 "\n"
Darin Petkovc2526a12010-04-21 14:24:04 -070051 " default: send metric with integer values to Chrome only\n"
52 " -a: send metric to autotest only (min/max/nbuckets ignored)\n"
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070053 " -b: send metric to both chrome and autotest\n"
Darin Petkovc2526a12010-04-21 14:24:04 -070054 " -t: convert sample from double seconds to int milliseconds\n");
Darin Petkov65b01462010-04-14 13:32:20 -070055 return 1;
56 }
57
Darin Petkovc2526a12010-04-21 14:24:04 -070058 const char* name = argv[name_index];
59 int sample;
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070060 if (secs_to_msecs) {
Darin Petkovc2526a12010-04-21 14:24:04 -070061 sample = static_cast<int>(atof(argv[name_index + 1]) * 1000.0);
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070062 } else {
Darin Petkovc2526a12010-04-21 14:24:04 -070063 sample = atoi(argv[name_index + 1]);
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070064 }
Darin Petkovc2526a12010-04-21 14:24:04 -070065 int min = atoi(argv[name_index + 2]);
66 int max = atoi(argv[name_index + 3]);
67 int nbuckets = atoi(argv[name_index + 4]);
Darin Petkov4fcb2ac2010-04-15 16:40:23 -070068
Darin Petkov65b01462010-04-14 13:32:20 -070069 // Send metrics
70 if (send_to_autotest) {
Darin Petkovc2526a12010-04-21 14:24:04 -070071 MetricsLibrary::SendToAutotest(name, sample);
Darin Petkov65b01462010-04-14 13:32:20 -070072 }
73 if (send_to_chrome) {
Darin Petkovc2526a12010-04-21 14:24:04 -070074 MetricsLibrary::SendToChrome(name, sample, min, max, nbuckets);
Darin Petkov65b01462010-04-14 13:32:20 -070075 }
76 return 0;
77}