Ejemplo n.º 1
0
def _enqueue_correlated(ctx: _Context):
    """Enqueues a correlated deploy for further processing by orchestrator.
    
    """
    dramatiq.get_broker().enqueue(
        dramatiq.Message(
            queue_name="orchestration.engine.step",
            actor_name="on_step_deploy_finalized",
            args=([
                encoder.encode(ctx.deploy_execution_ctx),
                encoder.encode(ctx.node_id), ctx.block_hash, ctx.deploy_hash
            ]),
            kwargs=dict(),
            options=dict(),
        ))
Ejemplo n.º 2
0
def _set(store: typing.Callable, key: str, data: typing.Any) -> str:
    """Wraps redis.set command.
    
    """
    store.set(key, json.dumps(encoder.encode(data), indent=4))

    return key
Ejemplo n.º 3
0
def _get_message(info: events.EventInfo) -> LogMessage:
    """Returns application information to be logged.
    
    """
    if info.priority >= Level.FATAL.value:
        level = Level.FATAL
    elif info.priority >= Level.CRITICAL.value:
        level = Level.CRITICAL
    elif info.priority >= Level.ERROR.value:
        level = Level.ERROR
    elif info.priority >= Level.WARN.value:
        level = Level.WARN
    elif info.priority >= Level.INFO.value:
        level = Level.INFO
    else:
        level = Level.DEBUG

    from stests.core.utils import encoder

    return LogMessage(
        app=ApplicationInfo("STESTS", info.sub_system, __version__),
        event=EventInfo(
            id=info.id,
            level=level.name,
            priority=info.priority,
            timestamp=info.timestamp,
            type=info.name,
        ),
        process=ProcessInfo(
            os_user=pwd.getpwuid(os.getuid())[0],
            pid=str(os.getpid()).zfill(5),
        ),
        message=info.message,
        data=encoder.encode(info.data, requires_decoding=False),
    )
Ejemplo n.º 4
0
def test_06():
    """Test a collection of classes can be encoded."""
    for typeof in (tuple, list):
        collection = typeof(_get_test_dclass_instances())
        encoded = encoder.encode(collection)
        assert isinstance(encoded, typeof)
        for i in encoded:
            assert isinstance(i, dict)
            assert '_type_key' in i
Ejemplo n.º 5
0
def encode(data: MessageData) -> bytes:
    """Encodes input data in readiness for dispatch over wire.

    :param data: Message data to be dispatched over wire.
    :returns: Bytestream for dispatch.
    
    """
    return json.dumps(_encoder.encode(data),
                      separators=(",", ":")).encode("utf-8")
Ejemplo n.º 6
0
def _setnx(store: typing.Callable, key: str, data: typing.Any) -> typing.Tuple[str, bool]:
    """Wraps redis.setnx command.
    
    """
    return bool(store.setnx(key, json.dumps(encoder.encode(data), indent=4)))
Ejemplo n.º 7
0
def test_10():
    """Test round-trip over collections."""
    for ctype in (tuple, list):
        c = encoder.decode(encoder.encode(ctype(_get_test_dclass_instances())))
        assert isinstance(c, ctype)
Ejemplo n.º 8
0
def test_09():
    """Test round-trip over instances."""
    for i in _get_test_dclass_instances():
        k = encoder.decode(encoder.encode(i))
        assert isinstance(k, type(i))
Ejemplo n.º 9
0
def test_08():
    """Test enum members are converted to strings."""
    for i in encoder.ENUM_TYPE_SET:
        for j in i:
            assert encoder.encode(j) == j.name
Ejemplo n.º 10
0
def test_07():
    """Test scalar types are encoded as is."""
    for scalar in (1, True, 2.0):
        assert encoder.encode(scalar) == scalar
Ejemplo n.º 11
0
def test_05():
    """Test all data classes can be encoded."""
    for i in (_get_test_dclass_instances()):
        assert isinstance(encoder.encode(i), dict)
Ejemplo n.º 12
0
 def data_as_json(self):
     return json.dumps(encoder.encode(self.data), indent=4)
Ejemplo n.º 13
0
def test_09():
    """Test enum members are converted to strings."""
    for i in domain.ENUM_SET:
        for j in i:
            assert encoder.encode(j) == str(j)
Ejemplo n.º 14
0
def test_08():
    """Test scalar types are not encoded."""
    for scalar in (1, True, 2.0):
        assert encoder.encode(scalar) == scalar