Skip to content

Commit

Permalink
fix: add connector test cases
Browse files Browse the repository at this point in the history
Signed-off-by: Avik Basu <ab93@users.noreply.github.com>
  • Loading branch information
ab93 committed Aug 30, 2023
1 parent 9914b4c commit 2dcf1cf
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 0 deletions.
Empty file added tests/connectors/__init__.py
Empty file.
65 changes: 65 additions & 0 deletions tests/connectors/test_druid.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import json
import unittest
import datetime
from unittest.mock import patch, Mock
import pydruid.query
from pydruid.client import PyDruid
from pydruid.utils.aggregators import doublesum

from numalogic.connectors._config import Pivot
from numalogic.connectors.druid import DruidFetcher


def mock_group_by(*_, **__):
"""Mock group by response from druid."""
result = [
{
"version": "v1",
"timestamp": "2023-07-11T01:36:00.000Z",
"event": {"count": 5.0, "ciStatus": "success"},
},
{
"version": "v1",
"timestamp": "2023-07-11T01:37:00.000Z",
"event": {"count": 1.0, "ciStatus": "success"},
},
]
query = pydruid.query.Query(query_dict={}, query_type="groupBy")
query.parse(json.dumps(result))
return query


class TestDruid(unittest.TestCase):
start = None
end = None
prom = None

@classmethod
def setUpClass(cls) -> None:
end = datetime.datetime.now()
start = end - datetime.timedelta(hours=36)
cls.start = start.timestamp()
cls.end = end.timestamp()
cls.druid = DruidFetcher(url="http://localhost:8888", endpoint="druid/v2/")

@patch.object(PyDruid, "groupby", Mock(return_value=mock_group_by()))
def test_fetch_data(self):
_out = self.druid.fetch_data(
filter_keys=["assetId"],
filter_values=["5984175597303660107"],
dimensions=["ciStatus"],
datasource="customer-interaction-metrics",
aggregations={"count": doublesum("count")},
group_by=["timestamp", "ciStatus"],
hours=36,
pivot=Pivot(
index="timestamp",
columns=["ciStatus"],
value=["count"],
),
)
self.assertEqual(_out.shape, (2, 2))


if __name__ == "__main__":
unittest.main()
17 changes: 17 additions & 0 deletions tests/connectors/test_redis.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import unittest
from unittest.mock import patch

from redis.sentinel import Sentinel
import fakeredis

from numalogic.connectors.redis import get_redis_client

server = fakeredis.FakeServer()
fake_redis_client = fakeredis.FakeStrictRedis(server=server, decode_responses=True)


class TestRedisClient(unittest.TestCase):
def test_sentinel_redis_client(self):
with patch.object(Sentinel, "master_for", return_value=fake_redis_client):
r = get_redis_client("hostname", 6379, "pass", "mymaster")
self.assertTrue(r.ping())

0 comments on commit 2dcf1cf

Please sign in to comment.