Skip to content
Snippets Groups Projects
Commit 4af1db83 authored by Erik Reid's avatar Erik Reid
Browse files

added an end-to-end cli flash test, bugfixes

parent 8efb4b1b
No related branches found
No related tags found
No related merge requests found
import json
import logging
import os
from typing import Union
import click
import jsonschema
......@@ -131,10 +132,13 @@ class State(object):
return state['last'] if state else -1
@last.setter
def last(self, new_last: float):
state = {'last': new_last}
with open(self.filenames['state'], 'w') as f:
f.write(json.dumps(state))
def last(self, new_last: Union[float, None]):
if not new_last or new_last < 0:
os.unlink(self.filenames['state'])
else:
state = {'last': new_last}
with open(self.filenames['state'], 'w') as f:
f.write(json.dumps(state))
@property
def interfaces(self) -> list:
......@@ -178,8 +182,6 @@ def _validate_config(ctx, param, value):
return config
@click.command()
@click.option(
'--config',
......@@ -195,7 +197,7 @@ def main(config, force):
state = State(config['statedir'])
last = inventory.last_update_timestamp(config['inventory'])
if force or last != state.last:
if force or not last or last != state.last:
state.last = last
state.interfaces = inventory.load_interfaces(config['inventory'])
......
import json
import os
import random
import re
import tempfile
......@@ -87,7 +88,7 @@ def mocked_sensu():
responses.add(
method=responses.GET,
url=re.compile(r'.*sensu.+/api/core/v2/namespaces/[^\/]+/checks$'),
body=json.dumps(list(saved_sensu_checks.items()))
json=list(saved_sensu_checks.values())
)
def new_check_callback(request):
......@@ -138,6 +139,7 @@ def mocked_sensu():
yield saved_sensu_checks
@pytest.fixture
def mocked_inventory():
......@@ -147,3 +149,9 @@ def mocked_inventory():
url=re.compile(r'.*inventory.+/poller/interfaces.*'),
body=_load_test_data('interfaces.json'))
bogus_version = {'latch': {'timestamp': 10000 * random.random()}}
# mocked api for returning all checks
responses.add(
method=responses.GET,
url=re.compile(r'.*inventory.+/version.*'),
body=json.dumps(bogus_version))
import json
import tempfile
from click.testing import CliRunner
import responses
from brian_polling_manager import cli
@responses.activate
def test_run_flashtest(config, mocked_sensu, mocked_inventory):
with tempfile.NamedTemporaryFile(mode='w') as f:
f.write(json.dumps(config))
f.flush()
runner = CliRunner()
result = runner.invoke(
cli.main,
['--config', f.name, '--force']
)
assert result.exit_code == 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment