Darin Petkov | 65b0146 | 2010-04-14 13:32:20 -0700 | [diff] [blame] | 1 | // 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 Petkov | 4fcb2ac | 2010-04-15 16:40:23 -0700 | [diff] [blame] | 5 | #include <cstdio> |
Darin Petkov | 65b0146 | 2010-04-14 13:32:20 -0700 | [diff] [blame] | 6 | #include <cstdlib> |
Darin Petkov | 65b0146 | 2010-04-14 13:32:20 -0700 | [diff] [blame] | 7 | |
| 8 | #include "metrics_library.h" |
| 9 | |
Darin Petkov | 65b0146 | 2010-04-14 13:32:20 -0700 | [diff] [blame] | 10 | int main(int argc, char** argv) { |
| 11 | bool send_to_autotest = false; |
| 12 | bool send_to_chrome = true; |
Darin Petkov | 4fcb2ac | 2010-04-15 16:40:23 -0700 | [diff] [blame] | 13 | bool secs_to_msecs = false; |
Darin Petkov | c2526a1 | 2010-04-21 14:24:04 -0700 | [diff] [blame^] | 14 | int name_index = 1; |
Darin Petkov | 65b0146 | 2010-04-14 13:32:20 -0700 | [diff] [blame] | 15 | bool print_usage = false; |
| 16 | |
| 17 | if (argc >= 3) { |
| 18 | // Parse arguments |
| 19 | int flag; |
Darin Petkov | 4fcb2ac | 2010-04-15 16:40:23 -0700 | [diff] [blame] | 20 | while ((flag = getopt(argc, argv, "abt")) != -1) { |
Darin Petkov | 65b0146 | 2010-04-14 13:32:20 -0700 | [diff] [blame] | 21 | 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 Petkov | 4fcb2ac | 2010-04-15 16:40:23 -0700 | [diff] [blame] | 30 | case 't': |
| 31 | secs_to_msecs = true; |
| 32 | break; |
Darin Petkov | 65b0146 | 2010-04-14 13:32:20 -0700 | [diff] [blame] | 33 | default: |
| 34 | print_usage = true; |
| 35 | break; |
| 36 | } |
| 37 | } |
Darin Petkov | c2526a1 | 2010-04-21 14:24:04 -0700 | [diff] [blame^] | 38 | name_index = optind; |
Darin Petkov | 65b0146 | 2010-04-14 13:32:20 -0700 | [diff] [blame] | 39 | } else { |
| 40 | print_usage = true; |
| 41 | } |
| 42 | |
Darin Petkov | c2526a1 | 2010-04-21 14:24:04 -0700 | [diff] [blame^] | 43 | if ((name_index + 5) != argc) { |
Darin Petkov | 65b0146 | 2010-04-14 13:32:20 -0700 | [diff] [blame] | 44 | print_usage = true; |
| 45 | } |
| 46 | |
| 47 | if (print_usage) { |
Darin Petkov | 4fcb2ac | 2010-04-15 16:40:23 -0700 | [diff] [blame] | 48 | fprintf(stderr, |
Darin Petkov | c2526a1 | 2010-04-21 14:24:04 -0700 | [diff] [blame^] | 49 | "Usage: metrics_client [-abt] name sample min max nbuckets\n" |
Darin Petkov | 4fcb2ac | 2010-04-15 16:40:23 -0700 | [diff] [blame] | 50 | "\n" |
Darin Petkov | c2526a1 | 2010-04-21 14:24:04 -0700 | [diff] [blame^] | 51 | " default: send metric with integer values to Chrome only\n" |
| 52 | " -a: send metric to autotest only (min/max/nbuckets ignored)\n" |
Darin Petkov | 4fcb2ac | 2010-04-15 16:40:23 -0700 | [diff] [blame] | 53 | " -b: send metric to both chrome and autotest\n" |
Darin Petkov | c2526a1 | 2010-04-21 14:24:04 -0700 | [diff] [blame^] | 54 | " -t: convert sample from double seconds to int milliseconds\n"); |
Darin Petkov | 65b0146 | 2010-04-14 13:32:20 -0700 | [diff] [blame] | 55 | return 1; |
| 56 | } |
| 57 | |
Darin Petkov | c2526a1 | 2010-04-21 14:24:04 -0700 | [diff] [blame^] | 58 | const char* name = argv[name_index]; |
| 59 | int sample; |
Darin Petkov | 4fcb2ac | 2010-04-15 16:40:23 -0700 | [diff] [blame] | 60 | if (secs_to_msecs) { |
Darin Petkov | c2526a1 | 2010-04-21 14:24:04 -0700 | [diff] [blame^] | 61 | sample = static_cast<int>(atof(argv[name_index + 1]) * 1000.0); |
Darin Petkov | 4fcb2ac | 2010-04-15 16:40:23 -0700 | [diff] [blame] | 62 | } else { |
Darin Petkov | c2526a1 | 2010-04-21 14:24:04 -0700 | [diff] [blame^] | 63 | sample = atoi(argv[name_index + 1]); |
Darin Petkov | 4fcb2ac | 2010-04-15 16:40:23 -0700 | [diff] [blame] | 64 | } |
Darin Petkov | c2526a1 | 2010-04-21 14:24:04 -0700 | [diff] [blame^] | 65 | int min = atoi(argv[name_index + 2]); |
| 66 | int max = atoi(argv[name_index + 3]); |
| 67 | int nbuckets = atoi(argv[name_index + 4]); |
Darin Petkov | 4fcb2ac | 2010-04-15 16:40:23 -0700 | [diff] [blame] | 68 | |
Darin Petkov | 65b0146 | 2010-04-14 13:32:20 -0700 | [diff] [blame] | 69 | // Send metrics |
| 70 | if (send_to_autotest) { |
Darin Petkov | c2526a1 | 2010-04-21 14:24:04 -0700 | [diff] [blame^] | 71 | MetricsLibrary::SendToAutotest(name, sample); |
Darin Petkov | 65b0146 | 2010-04-14 13:32:20 -0700 | [diff] [blame] | 72 | } |
| 73 | if (send_to_chrome) { |
Darin Petkov | c2526a1 | 2010-04-21 14:24:04 -0700 | [diff] [blame^] | 74 | MetricsLibrary::SendToChrome(name, sample, min, max, nbuckets); |
Darin Petkov | 65b0146 | 2010-04-14 13:32:20 -0700 | [diff] [blame] | 75 | } |
| 76 | return 0; |
| 77 | } |