Code Coverage

Cobertura Coverage Report > osm_common >

msgbase.py

Trend

File Coverage summary

NameClassesLinesConditionals
msgbase.py
100%
1/1
58%
18/31
100%
0/0

Coverage Breakdown by Class

NameLinesConditionals
msgbase.py
58%
18/31
N/A

Source

osm_common/msgbase.py
1 # -*- coding: utf-8 -*-
2
3 # Copyright 2018 Telefonica S.A.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #    http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
14 # implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17
18 1 from http import HTTPStatus
19 1 import logging
20 1 from threading import Lock
21
22 1 from osm_common.common_utils import FakeLock
23
24 1 __author__ = "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>"
25
26
27 1 class MsgException(Exception):
28     """
29     Base Exception class for all msgXXXX exceptions
30     """
31
32 1     def __init__(self, message, http_code=HTTPStatus.SERVICE_UNAVAILABLE):
33         """
34         General exception
35         :param message:  descriptive text
36         :param http_code: <http.HTTPStatus> type. It contains ".value" (http error code) and ".name" (http error name
37         """
38 0         self.http_code = http_code
39 0         Exception.__init__(self, "messaging exception " + message)
40
41
42 1 class MsgBase(object):
43     """
44     Base class for all msgXXXX classes
45     """
46
47 1     def __init__(self, logger_name="msg", lock=False):
48         """
49         Constructor of FsBase
50         :param logger_name: logging name
51         :param lock: Used to protect simultaneous access to the same instance class by several threads:
52             False, None: Do not protect, this object will only be accessed by one thread
53             True: This object needs to be protected by several threads accessing.
54             Lock object. Use thi Lock for the threads access protection
55         """
56 1         self.logger = logging.getLogger(logger_name)
57 1         if not lock:
58 1             self.lock = FakeLock()
59 0         elif lock is True:
60 0             self.lock = Lock()
61 0         elif isinstance(lock, Lock):
62 0             self.lock = lock
63         else:
64 0             raise ValueError("lock parameter must be a Lock class or boolean")
65
66 1     def connect(self, config):
67 0         pass
68
69 1     def disconnect(self):
70 0         pass
71
72 1     def write(self, topic, key, msg):
73 0         raise MsgException(
74             "Method 'write' not implemented", http_code=HTTPStatus.INTERNAL_SERVER_ERROR
75         )
76
77 1     def read(self, topic):
78 0         raise MsgException(
79             "Method 'read' not implemented", http_code=HTTPStatus.INTERNAL_SERVER_ERROR
80         )
81
82 1     async def aiowrite(self, topic, key, msg, loop=None):
83 0         raise MsgException(
84             "Method 'aiowrite' not implemented",
85             http_code=HTTPStatus.INTERNAL_SERVER_ERROR,
86         )
87
88 1     async def aioread(
89         self, topic, loop=None, callback=None, aiocallback=None, group_id=None, **kwargs
90     ):
91 0         raise MsgException(
92             "Method 'aioread' not implemented",
93             http_code=HTTPStatus.INTERNAL_SERVER_ERROR,
94         )