Ejemplo n.º 1
0
def modem(request):
    data = request.data
    command = data.get('command')
    if not command:
        return Response(data={'error': 'command missing'},
                        status=HTTP_400_BAD_REQUEST)

    the_modem = services().modem
    asyncio.run_coroutine_threadsafe(the_modem.async_command(command),
                                     loop=the_modem.aio_loop)

    return Response(status=HTTP_202_ACCEPTED)
Ejemplo n.º 2
0
def test_starts_stops_service(api_client):
    bootstrap_spec(
        ServiceGroupSpec(fp1=lambda _: FlippinService('FlippingService 1')))

    assert api_client.get(
        '/api/services/fp1/').json()['status']['state'] == 'READY'

    for target in ['TERMINATED', 'READY']:
        result = api_client.patch('/api/services/fp1/',
                                  data=json.dumps(
                                      {'status': {
                                          'state': target
                                      }}),
                                  content_type='application/json')

        assert result.status_code == status.HTTP_202_ACCEPTED
        assert services.services().fp1.status().state == ServiceState[target]
Ejemplo n.º 3
0
def test_provides_correct_service_status(api_client):
    bootstrap_spec(spec=ServiceGroupSpec(
        fp1=lambda _: FlippinService('FlippingService 1'),
        fp2=lambda _: FlippinService('FlippingService 2'),
        fp3=lambda _: FlippinService('FlippingService 3')))

    summary = api_client.get('/api/services/').json()

    for i, element in enumerate(summary, start=1):
        assert element['id'] == f'fp{i}'
        assert element['name'] == f'FlippingService {i}'
        assert element['status']['state'] == 'READY'

    fp1 = services.services().fp1
    fp1.state = ServiceState.ERRORED
    fp1.exception = EOFError('Ooops!')
    fp1.traceback = ['Ooops']

    fp1_summary = api_client.get('/api/services/fp1/').json()
    assert fp1_summary['id'] == 'fp1'
    assert fp1_summary['status']['state'] == 'ERRORED'
    assert fp1_summary['status']['exception'] == 'EOFError: Ooops!'
    assert fp1_summary['status']['traceback'] == ['Ooops']
Ejemplo n.º 4
0
 def _get_service_or_404(self, pk):
     service = getattr(services(), pk, None)
     if service is None:
         raise Http404(f'No services match {pk}.')
     return service
Ejemplo n.º 5
0
 def list(self, _):
     return Response(
         ServiceSerializer(instance=services().services, many=True).data)
Ejemplo n.º 6
0
    def handle(self, *args, **options):
        blocker.bootstrap_mode(BootstrapMode.FAKE_SERVER if settings.
                               MODEM_USE_FAKE else BootstrapMode.SERVER)

        Console(stdout=self.stdout, modem=services.services().modem).cmdloop(
            'Type "help" to see available commands.')