blob: 0bd4cfb550609e7510c75f882621e6911b56164e [file] [log] [blame]
Alex Klein6bb06942023-03-13 16:45:16 -06001# Copyright 2023 The ChromiumOS Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""Telemetry POC script."""
6
7import argparse
8import time
9from typing import List, Optional
10
11from chromite.lib import commandline
12from chromite.utils.telemetry import exporter
13from chromite.utils.telemetry import trace
14
15
16def get_parser() -> commandline.ArgumentParser:
17 """Build the argument parser."""
18 parser = commandline.ArgumentParser(description=__doc__)
19
20 parser.add_argument(
21 "-t",
22 "--time",
23 type=int,
24 default=1,
25 help="Seconds to sleep.",
26 )
27
28 return parser
29
30
31def parse_arguments(argv: List) -> argparse.Namespace:
32 """Parse and validate arguments."""
33 parser = get_parser()
34 opts = parser.parse_args(argv)
35
36 opts.Freeze()
37 return opts
38
39
40def main(argv: Optional[List[str]]) -> Optional[int]:
41 """Main."""
42 opts = parse_arguments(argv)
43
44 clearcut = exporter.ClearcutSpanExporter()
45 tracer = trace.PocTracer()
46 tracer.exporters.append(clearcut)
47 with tracer:
48 with tracer.start_as_current_span("test") as span:
49 time.sleep(opts.time / 2)
50 span.add_event(name="mid-sleep-event", attrs={"attr": "val"})
51 time.sleep(opts.time / 2)
52 span.set_status(code=0)