blob: 13805ea1c401018b3acbd8d70c193410c4a82bed [file] [log] [blame]
#!/usr/bin/env fuchsia-vendored-python
# Copyright 2023 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import argparse
import csv
import signal
import time
from typing import Any
class MockMeasurePower:
def __init__(self, csv_out: str) -> None:
self.csv_out = csv_out
self.keep_going = True
def stop_now(self, *unused_args: Any) -> None:
self.keep_going = False
def start(self) -> None:
signal.signal(signal.SIGINT, self.stop_now)
signal.signal(signal.SIGTERM, self.stop_now)
with open(self.csv_out, "w", newline="") as csvfile:
fieldnames = ["Timestamp", "Current", "Voltage"]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
csvfile.flush()
i = 0
while self.keep_going:
writer.writerow(
{
"Timestamp": time.time_ns(),
"Current": 100 + (i % 10),
"Voltage": 12,
}
)
i += 1
csvfile.flush()
time.sleep(1)
if __name__ == "__main__":
parser = argparse.ArgumentParser(
prog="mock_measure_power",
description="Mocks measurepower binary provided by infra for local execution",
)
parser.add_argument(
"-format", "--out_format", help="ignored, we only support csv"
)
parser.add_argument(
"-out", "--csv_out", help="defines the file to output csv to"
)
args = parser.parse_args()
app = MockMeasurePower(args.csv_out)
app.start()