def test_memorydatabase():

    subject_storage_factory.override(
        providers.Factory(lambda x: SQLLiteSubjectStorage(x, ":memory:"))
    )
    assert not subject_storage_factory("test-subject").is_persistent()
    assert not subject_storage_factory("test-subject").is_concurrency_safe()
Exemple #2
0
def init():
    # This is an inmemory database and it is not persistent
    # you probably want to comment out this configuration and enable a more appropriate one

    from krules_core.tests.subject.sqlite_storage import SQLLiteSubjectStorage
    subject_storage_factory.override(
        providers.Factory(
            lambda x, **kwargs: SQLLiteSubjectStorage(x, ":memory:")))
def test_memorydatabase():

    if os.path.exists(TEST_FNAME):
        os.unlink(TEST_FNAME)

    subject_storage_factory.override(
        providers.Factory(
            lambda x, **kwargs: SQLLiteSubjectStorage(x, TEST_FNAME)))
    assert subject_storage_factory("test-subject").is_persistent()
    assert subject_storage_factory("test-subject").is_concurrency_safe()
Exemple #4
0
def setup_module(_):

    extra_kwargs = {}
    if os.environ.get("API_URL", False):
        extra_kwargs.update({"override_api_url": os.environ.get("API_URL")})

    subject_storage_factory.override(
        providers.Factory(lambda name, event_info, event_data: (
            name.startswith("k8s:") and k8s_storage_impl.SubjectsK8sStorage(
                resource_path=name[4:],
                resource_body=event_data.get("k8s_object")) or providers.
            Factory(lambda *args, **kwargs: SQLLiteSubjectStorage(
                args[0], ":memory:")))))

    proc_events_rx_factory.override(
        providers.Singleton(rx.subjects.ReplaySubject))
Exemple #5
0
                                   subject_storage_factory, subject_factory)
from krules_core.route.router import EventRouter
from .route.dispatcher import CloudEventsDispatcher
from krules_core.tests.subject.sqlite_storage import SQLLiteSubjectStorage

from pytest_localserver.http import WSGIServer
from werkzeug.wrappers import Request

httpserver = plugin.httpserver

configs_factory.override(providers.Singleton(lambda: {}))
event_router_factory.override(providers.Singleton(EventRouter))

subject_storage_factory.override(
    providers.Factory(
        lambda x, **kwargs: SQLLiteSubjectStorage(x, ":memory:")))


def fake_receiver_app(environ, start_response):
    """Simplest possible WSGI application"""
    request = Request(environ)
    m = marshaller.NewDefaultHTTPMarshaller()
    event = m.FromRequest(v1.Event(), request.headers,
                          io.BytesIO(request.data), lambda x: json.load(x))
    event_info = event.Properties()
    event_info.update(event_info.pop("extensions"))
    subject = subject_factory(event_info.get("subject", "sys-0"))

    assert "originid" in event_info
    assert "subject" in event_info
    assert "data" in event_info
Exemple #6
0
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import rx

from dependency_injector import providers as providers

from krules_core.tests.subject.sqlite_storage import SQLLiteSubjectStorage

from .route.dispatcher import BaseDispatcher
from .route.router import EventRouter
from .subject.storaged_subject import Subject
from .exceptions_dumpers import ExceptionsDumpers

import logging
logger = logging.getLogger(__name__)

configs_factory = providers.Singleton(lambda: {})

# for testing/development only
subject_storage_factory = providers.Factory(
    lambda x: SQLLiteSubjectStorage(x, ":memory:"))

subject_factory = providers.Factory(Subject)
proc_events_rx_factory = providers.Singleton(rx.subjects.ReplaySubject)
event_router_factory = providers.Singleton(EventRouter)
event_dispatcher_factory = providers.Singleton(BaseDispatcher)
exceptions_dumpers_factory = providers.Singleton(ExceptionsDumpers)
Exemple #7
0
from dependency_injector import providers

from krules_core.providers import (configs_factory, event_router_factory,
                                   event_dispatcher_factory,
                                   subject_storage_factory, subject_factory)
from krules_core.route.router import EventRouter
from .route.dispatcher import CloudEventsDispatcher
from krules_core.tests.subject.sqlite_storage import SQLLiteSubjectStorage

httpserver = plugin.httpserver

configs_factory.override(providers.Singleton(lambda: {}))
event_router_factory.override(providers.Singleton(EventRouter))

subject_storage_factory.override(
    providers.Factory(lambda x: SQLLiteSubjectStorage(x, ":memory:")))


def test_dispatched_event(httpserver):
    from krules_core import types

    event_dispatcher_factory.override(
        providers.Singleton(lambda: CloudEventsDispatcher(
            httpserver.url, "pytest", test=True)))
    router = event_router_factory()
    subject = subject_factory("test-subject")
    subject.set_ext("ext1", "val1")
    subject.set_ext("ext2", "2")
    _id, code, sent_headers = router.route("test-type", subject,
                                           {"key1": "hello"})
    print(sent_headers)