Ejemplo n.º 1
0
def test_metrics(monkeypatch):
    client = client_mock(monkeypatch)

    resp = MagicMock()
    resp.text = 'metrics'

    client.return_value.session.get.return_value = resp

    parsed = MagicMock()
    parsed.samples = [
        ('metric-1', {}, 20.17), ('metric-2', {'verb': 'GET'}, 20.16), ('metric-1', {'verb': 'POST'}, 20.18)
    ]

    parser = MagicMock()
    parser.return_value = [parsed]

    monkeypatch.setattr('zmon_worker_monitor.builtins.plugins.kubernetes.text_string_to_metric_families', parser)

    k = KubernetesWrapper()
    metrics = k.metrics()

    expected = {
        'metric-1': [({}, 20.17), ({'verb': 'POST'}, 20.18)],
        'metric-2': [({'verb': 'GET'}, 20.16)],
    }

    assert metrics == expected

    parser.assert_called_with(resp.text)
    client.return_value.session.get.assert_called_with(CLUSTER_URL + '/metrics')
Ejemplo n.º 2
0
def test_namespaces(monkeypatch):
    client_mock(monkeypatch)

    res = [resource_mock({'metadata': {}})]

    ns = MagicMock()
    ns.objects.return_value.all.return_value = res
    monkeypatch.setattr('pykube.Namespace', ns)

    k = KubernetesWrapper()
    namespaces = k.namespaces()

    assert [r.obj for r in res] == namespaces
Ejemplo n.º 3
0
def test_namespaces(monkeypatch):
    client_mock(monkeypatch)

    res = [resource_mock({'metadata': {}})]

    ns = MagicMock()
    ns.objects.return_value.all.return_value = res
    monkeypatch.setattr('pykube.Namespace', ns)

    k = KubernetesWrapper()
    namespaces = k.namespaces()

    assert [r.obj for r in res] == namespaces
Ejemplo n.º 4
0
def test_nodes(monkeypatch, kwargs, filter_kwargs, res):
    client_mock(monkeypatch)

    node = MagicMock()
    node.objects.return_value.filter.return_value = res

    monkeypatch.setattr('pykube.Node', node)

    k = KubernetesWrapper()

    nodes = k.nodes(**kwargs)

    assert [r.obj for r in res] == nodes

    node.objects.return_value.filter.assert_called_with(**filter_kwargs)
Ejemplo n.º 5
0
def test_nodes(monkeypatch, kwargs, filter_kwargs, res):
    client_mock(monkeypatch)

    node = MagicMock()
    node.objects.return_value.filter.return_value = res

    monkeypatch.setattr('pykube.Node', node)

    k = KubernetesWrapper()

    nodes = k.nodes(**kwargs)

    assert [r.obj for r in res] == nodes

    node.objects.return_value.filter.assert_called_with(**filter_kwargs)
Ejemplo n.º 6
0
def test_persistentvolumes(monkeypatch, kwargs, filter_kwargs, res):
    client_mock(monkeypatch)

    persistentvolume = MagicMock()
    query = persistentvolume.objects.return_value.filter.return_value
    query.all.return_value = res

    monkeypatch.setattr('pykube.PersistentVolume', persistentvolume)

    k = KubernetesWrapper()

    persistentvolumes = k.persistentvolumes(**kwargs)

    assert [r.obj for r in res] == persistentvolumes

    persistentvolume.objects.return_value.filter.assert_called_with(**filter_kwargs)
Ejemplo n.º 7
0
def test_persistentvolumes(monkeypatch, kwargs, filter_kwargs, res):
    client_mock(monkeypatch)

    persistentvolume = MagicMock()
    query = persistentvolume.objects.return_value.filter.return_value
    query.all.return_value = res

    monkeypatch.setattr('pykube.PersistentVolume', persistentvolume)

    k = KubernetesWrapper()

    persistentvolumes = k.persistentvolumes(**kwargs)

    assert [r.obj for r in res] == persistentvolumes

    persistentvolume.objects.return_value.filter.assert_called_with(
        **filter_kwargs)
Ejemplo n.º 8
0
def test_metrics(monkeypatch):
    client = client_mock(monkeypatch)

    resp = MagicMock()
    resp.text = "metrics"

    client.session.get.return_value = resp

    parsed = MagicMock()
    parsed.samples = [
        ("metric-1", {}, 20.17),
        ("metric-2", {
            "verb": "GET"
        }, 20.16),
        ("metric-1", {
            "verb": "POST"
        }, 20.18),
    ]

    parser = MagicMock()
    parser.return_value = [parsed]

    monkeypatch.setattr(
        "zmon_worker_monitor.builtins.plugins.kubernetes.text_string_to_metric_families",
        parser,
    )

    k = KubernetesWrapper(check_id='<test>')
    metrics = k.metrics()

    expected = {
        "metric-1": [({}, 20.17), ({
            "verb": "POST"
        }, 20.18)],
        "metric-2": [({
            "verb": "GET"
        }, 20.16)],
    }

    assert metrics == expected

    parser.assert_called_with(resp.text)
    client.session.get.assert_called_with(CLUSTER_URL + "/metrics")
Ejemplo n.º 9
0
def test_deployments(monkeypatch, kwargs, filter_kwargs, res):
    client_mock(monkeypatch)
    get_resources = get_resources_mock(res)

    deployment = MagicMock()
    query = deployment.objects.return_value.filter.return_value

    monkeypatch.setattr(
        'zmon_worker_monitor.builtins.plugins.kubernetes.KubernetesWrapper._get_resources', get_resources)
    monkeypatch.setattr('pykube.Deployment', deployment)

    k = KubernetesWrapper()

    deployments = k.deployments(**kwargs)

    assert [r.obj for r in res] == deployments

    get_resources.assert_called_with(query)
    deployment.objects.return_value.filter.assert_called_with(**filter_kwargs)
Ejemplo n.º 10
0
def test_pods(monkeypatch, kwargs, filter_kwargs, res):
    client_mock(monkeypatch)
    get_resources = get_resources_mock(res)

    pod = MagicMock()
    query = pod.objects.return_value.filter.return_value

    monkeypatch.setattr(
        'zmon_worker_monitor.builtins.plugins.kubernetes.KubernetesWrapper._get_resources', get_resources)
    monkeypatch.setattr('pykube.Pod', pod)

    k = KubernetesWrapper()

    pods = k.pods(**kwargs)

    assert [r.obj for r in res] == pods

    get_resources.assert_called_with(query)
    pod.objects.return_value.filter.assert_called_with(**filter_kwargs)
Ejemplo n.º 11
0
def test_configmaps(monkeypatch, kwargs, filter_kwargs, res):
    client_mock(monkeypatch)
    get_resources = get_resources_mock(res)

    configmap = MagicMock()
    query = configmap.objects.return_value.filter.return_value

    monkeypatch.setattr(
        'zmon_worker_monitor.builtins.plugins.kubernetes.KubernetesWrapper._get_resources', get_resources)
    monkeypatch.setattr('pykube.ConfigMap', configmap)

    k = KubernetesWrapper()

    configmaps = k.configmaps(**kwargs)

    assert [r.obj for r in res] == configmaps

    get_resources.assert_called_with(query)
    configmap.objects.return_value.filter.assert_called_with(**filter_kwargs)
Ejemplo n.º 12
0
def test_cronjobs(monkeypatch, kwargs, filter_kwargs, res):
    client_mock(monkeypatch)
    get_resources = get_resources_mock(res)

    cronjob = MagicMock()
    query = cronjob.objects.return_value.filter.return_value

    monkeypatch.setattr(
        'zmon_worker_monitor.builtins.plugins.kubernetes.KubernetesWrapper._get_resources',
        get_resources)
    monkeypatch.setattr('pykube.CronJob', cronjob)

    k = KubernetesWrapper()

    pods = k.cronjobs(**kwargs)

    assert [r.obj for r in res] == pods

    get_resources.assert_called_with(query)
    cronjob.objects.return_value.filter.assert_called_with(**filter_kwargs)
Ejemplo n.º 13
0
def test_resourcequotas(monkeypatch, kwargs, filter_kwargs, res):
    client_mock(monkeypatch)

    get_resources = get_resources_mock(res)

    resourcequota = MagicMock()
    query = resourcequota.objects.return_value.filter.return_value
    monkeypatch.setattr(
        'zmon_worker_monitor.builtins.plugins.kubernetes.KubernetesWrapper._get_resources', get_resources)
    monkeypatch.setattr('pykube.ResourceQuota', resourcequota)

    query.all.return_value = res

    k = KubernetesWrapper()

    res_quotas = k.resourcequotas(**kwargs)

    assert [r.obj for r in res] == res_quotas

    resourcequota.objects.return_value.filter.assert_called_with(**filter_kwargs)
Ejemplo n.º 14
0
def test_configmaps(monkeypatch, kwargs, filter_kwargs, res):
    client_mock(monkeypatch)
    get_resources = get_resources_mock(res)

    configmap = MagicMock()
    query = configmap.objects.return_value.filter.return_value

    monkeypatch.setattr(
        'zmon_worker_monitor.builtins.plugins.kubernetes.KubernetesWrapper._get_resources',
        get_resources)
    monkeypatch.setattr('pykube.ConfigMap', configmap)

    k = KubernetesWrapper()

    configmaps = k.configmaps(**kwargs)

    assert [r.obj for r in res] == configmaps

    get_resources.assert_called_with(query)
    configmap.objects.return_value.filter.assert_called_with(**filter_kwargs)
Ejemplo n.º 15
0
def test_deployments(monkeypatch, kwargs, filter_kwargs, res):
    client_mock(monkeypatch)
    get_resources = get_resources_mock(res)

    deployment = MagicMock()
    query = deployment.objects.return_value.filter.return_value

    monkeypatch.setattr(
        'zmon_worker_monitor.builtins.plugins.kubernetes.KubernetesWrapper._get_resources',
        get_resources)
    monkeypatch.setattr('pykube.Deployment', deployment)

    k = KubernetesWrapper()

    deployments = k.deployments(**kwargs)

    assert [r.obj for r in res] == deployments

    get_resources.assert_called_with(query)
    deployment.objects.return_value.filter.assert_called_with(**filter_kwargs)
Ejemplo n.º 16
0
def test_ingresses(monkeypatch, kwargs, filter_kwargs, res):
    client_mock(monkeypatch)
    get_resources = get_resources_mock(res)

    ingress = MagicMock()
    query = ingress.objects.return_value.filter.return_value

    monkeypatch.setattr(
        'zmon_worker_monitor.builtins.plugins.kubernetes.KubernetesWrapper._get_resources',
        get_resources)
    monkeypatch.setattr('pykube.Ingress', ingress)

    k = KubernetesWrapper()

    ingresses = k.ingresses(**kwargs)

    assert [r.obj for r in res] == ingresses

    get_resources.assert_called_with(query)
    ingress.objects.return_value.filter.assert_called_with(**filter_kwargs)
Ejemplo n.º 17
0
def test_persistentvolumeclaims(monkeypatch, kwargs, filter_kwargs, res):
    client_mock(monkeypatch)
    get_resources = get_resources_mock(res)

    persistentvolumeclaim = MagicMock()
    query = persistentvolumeclaim.objects.return_value.filter.return_value

    monkeypatch.setattr(
        'zmon_worker_monitor.builtins.plugins.kubernetes.KubernetesWrapper._get_resources',
        get_resources)
    monkeypatch.setattr('pykube.PersistentVolumeClaim', persistentvolumeclaim)

    k = KubernetesWrapper()

    persistentvolumeclaims = k.persistentvolumeclaims(**kwargs)

    assert [r.obj for r in res] == persistentvolumeclaims

    get_resources.assert_called_with(query)
    persistentvolumeclaim.objects.return_value.filter.assert_called_with(
        **filter_kwargs)
Ejemplo n.º 18
0
def test_get_resources(monkeypatch, kwargs, ns, q, res):
    client_mock(monkeypatch)

    query = MagicMock()
    query.filter.return_value = q

    namespaces = MagicMock()
    namespaces.return_value = ns

    monkeypatch.setattr('zmon_worker_monitor.builtins.plugins.kubernetes.KubernetesWrapper.namespaces', namespaces)

    k = KubernetesWrapper(**kwargs)
    result = k._get_resources(query)

    assert res == result

    if 'namespace' in kwargs and kwargs['namespace'] is None:
        calls = [call(namespace=n['metadata']['name']) for n in ns]
        query.filter.assert_has_calls(calls, any_order=True)
    else:
        query.filter.assert_called_with(namespace='default')
Ejemplo n.º 19
0
def test_metrics(monkeypatch):
    client = client_mock(monkeypatch)

    resp = MagicMock()
    resp.text = 'metrics'

    client.return_value.session.get.return_value = resp

    parsed = MagicMock()
    parsed.samples = [('metric-1', {}, 20.17),
                      ('metric-2', {
                          'verb': 'GET'
                      }, 20.16), ('metric-1', {
                          'verb': 'POST'
                      }, 20.18)]

    parser = MagicMock()
    parser.return_value = [parsed]

    monkeypatch.setattr(
        'zmon_worker_monitor.builtins.plugins.kubernetes.text_string_to_metric_families',
        parser)

    k = KubernetesWrapper()
    metrics = k.metrics()

    expected = {
        'metric-1': [({}, 20.17), ({
            'verb': 'POST'
        }, 20.18)],
        'metric-2': [({
            'verb': 'GET'
        }, 20.16)],
    }

    assert metrics == expected

    parser.assert_called_with(resp.text)
    client.return_value.session.get.assert_called_with(CLUSTER_URL +
                                                       '/metrics')
Ejemplo n.º 20
0
def test_resourcequotas(monkeypatch, kwargs, filter_kwargs, res):
    client_mock(monkeypatch)

    get_resources = get_resources_mock(res)

    resourcequota = MagicMock()
    query = resourcequota.objects.return_value.filter.return_value
    monkeypatch.setattr(
        'zmon_worker_monitor.builtins.plugins.kubernetes.KubernetesWrapper._get_resources',
        get_resources)
    monkeypatch.setattr('pykube.ResourceQuota', resourcequota)

    query.all.return_value = res

    k = KubernetesWrapper()

    res_quotas = k.resourcequotas(**kwargs)

    assert [r.obj for r in res] == res_quotas

    resourcequota.objects.return_value.filter.assert_called_with(
        **filter_kwargs)
Ejemplo n.º 21
0
def test_get_resources(monkeypatch, kwargs, ns, q, res):
    client_mock(monkeypatch)

    query = MagicMock()
    query.filter.return_value = q

    namespaces = MagicMock()
    namespaces.return_value = ns

    monkeypatch.setattr(
        'zmon_worker_monitor.builtins.plugins.kubernetes.KubernetesWrapper.namespaces',
        namespaces)

    k = KubernetesWrapper(**kwargs)
    result = k._get_resources(query)

    assert res == result

    if 'namespace' in kwargs and kwargs['namespace'] is None:
        calls = [call(namespace=n['metadata']['name']) for n in ns]
        query.filter.assert_has_calls(calls, any_order=True)
    else:
        query.filter.assert_called_with(namespace='default')
Ejemplo n.º 22
0
    def __init__(self,
                 monkeypatch,
                 kind,
                 namespace,
                 resources,
                 owning_module="pykube"):
        self._query = MagicMock(name="query")
        self._object_manager = MagicMock(name="object_manager")
        self._object_manager.objects.return_value = self._query

        self._get_resources = MagicMock("get_resources")
        self._get_resources.return_value = resources

        monkeypatch.setattr("{}.{}".format(owning_module, kind),
                            self._object_manager)
        monkeypatch.setattr(
            "zmon_worker_monitor.builtins.plugins.kubernetes._get_resources",
            self._get_resources,
        )

        self._client = client_mock(monkeypatch)
        self.wrapper = KubernetesWrapper(namespace=namespace,
                                         check_id='<test>')
Ejemplo n.º 23
0
def test_deployments_error(monkeypatch, kwargs):
    k = KubernetesWrapper()

    with pytest.raises(CheckError):
        k.deployments(**kwargs)
Ejemplo n.º 24
0
def test_pods_error(kwargs):
    k = KubernetesWrapper(check_id='<test>')

    with pytest.raises(CheckError):
        k.pods(**kwargs)
Ejemplo n.º 25
0
def test_pods_error(monkeypatch, kwargs):
    k = KubernetesWrapper()

    with pytest.raises(CheckError):
        k.pods(**kwargs)
Ejemplo n.º 26
0
def test_deployments_error(kwargs):
    k = KubernetesWrapper(check_id='<test>')

    with pytest.raises(CheckError):
        k.deployments(**kwargs)
Ejemplo n.º 27
0
def test_pods_error(monkeypatch, kwargs):
    k = KubernetesWrapper()

    with pytest.raises(CheckError):
        k.pods(**kwargs)
Ejemplo n.º 28
0
def test_deployments_error(monkeypatch, kwargs):
    k = KubernetesWrapper()

    with pytest.raises(CheckError):
        k.deployments(**kwargs)