You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sdap.apache.org by tl...@apache.org on 2020/07/21 15:57:19 UTC
[incubator-sdap-ingester] 02/02: add unit test for K8sConfigMap
This is an automated email from the ASF dual-hosted git repository.
tloubrieu pushed a commit to branch kopf-operator
in repository https://gitbox.apache.org/repos/asf/incubator-sdap-ingester.git
commit 6b40f0680abbba680031ba09f7f6bf9186e4e0ae
Author: thomas loubrieu <th...@jpl.nasa.gov>
AuthorDate: Tue Jul 21 08:56:50 2020 -0700
add unit test for K8sConfigMap
---
.../config_operator/k8s/K8sConfigMap.py | 26 +++++++++-------
config_operator/tests/k8s/test_K8sConfigMap.py | 35 ++++++++++++++++++++--
2 files changed, 49 insertions(+), 12 deletions(-)
diff --git a/config_operator/config_operator/k8s/K8sConfigMap.py b/config_operator/config_operator/k8s/K8sConfigMap.py
index e2a7a10..40d07c9 100644
--- a/config_operator/config_operator/k8s/K8sConfigMap.py
+++ b/config_operator/config_operator/k8s/K8sConfigMap.py
@@ -4,7 +4,8 @@ from kubernetes import client, config
from config_operator.config_source import LocalDirConfig, RemoteGitConfig
from kubernetes.client.rest import ApiException
from typing import Union
-
+from kubernetes.client.api.core_v1_api import CoreV1Api
+from kubernetes.client import ApiClient
from config_operator.config_source.exceptions import UnreadableFileException
logging.basicConfig(level=logging.INFO)
@@ -14,19 +15,24 @@ logger = logging.getLogger(__name__)
class K8sConfigMap:
def __init__(self, configmap_name: str,
namespace: str,
- external_config: Union[LocalDirConfig, RemoteGitConfig]):
+ external_config: Union[LocalDirConfig, RemoteGitConfig],
+ api_instance: ApiClient = None,
+ api_core_v1_instance: CoreV1Api = None):
self._git_remote_config = external_config
self._namespace = namespace
self._configmap_name = configmap_name
- # test is this runs inside kubernetes cluster
- if os.getenv('KUBERNETES_SERVICE_HOST'):
- config.load_incluster_config()
- else:
- config.load_kube_config()
- configuration = client.Configuration()
- self._api_instance = client.ApiClient(configuration)
- self._api_core_v1_instance = client.CoreV1Api(self._api_instance)
+ if api_core_v1_instance is None:
+ # test is this runs inside kubernetes cluster
+ if os.getenv('KUBERNETES_SERVICE_HOST'):
+ config.load_incluster_config()
+ else:
+ config.load_kube_config()
+ configuration = client.Configuration()
+ api_instance = client.ApiClient(configuration)
+ api_core_v1_instance = client.CoreV1Api(api_instance)
+ self._api_instance = api_instance
+ self._api_core_v1_instance = api_core_v1_instance
self.publish()
def __del__(self):
diff --git a/config_operator/tests/k8s/test_K8sConfigMap.py b/config_operator/tests/k8s/test_K8sConfigMap.py
index 710b3f6..e649fbc 100644
--- a/config_operator/tests/k8s/test_K8sConfigMap.py
+++ b/config_operator/tests/k8s/test_K8sConfigMap.py
@@ -1,5 +1,7 @@
import unittest
+from unittest.mock import Mock
import os
+from kubernetes.client.rest import ApiException
from config_operator.k8s import K8sConfigMap
from config_operator.config_source import RemoteGitConfig, LocalDirConfig
@@ -28,14 +30,43 @@ class K8sConfigMapTest(unittest.TestCase):
config_map = K8sConfigMap('collection-ingester', 'sdap', remote_git_config)
config_map.publish()
+ @unittest.skip('requires kubernetes')
+ def test_createconfigmapfromlocaldir_with_k8s(self):
+ local_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)),
+ '..',
+ 'resources',
+ 'localDirTest')
+ local_config = LocalDirConfig(local_dir)
+
+ config_map = K8sConfigMap('collection-ingester', 'sdap', local_config)
+ config_map.publish()
+
def test_createconfigmapfromlocaldir(self):
local_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)),
'..',
'resources',
'localDirTest')
- remote_git_config = LocalDirConfig(local_dir)
+ local_config = LocalDirConfig(local_dir)
- config_map = K8sConfigMap('collection-ingester', 'sdap', remote_git_config)
+ api_instance = Mock()
+ api_instance.close = Mock()
+
+ api_core_v1_mock = Mock()
+ api_core_v1_mock.create_namespaced_config_map = Mock(return_value={
+ 'api_version': 'v1',
+ 'binary_data': None,
+ 'data': {}
+ })
+ api_core_v1_mock.patch_namespaced_config_map = Mock(return_value={
+ 'api_version': 'v1',
+ 'binary_data': None,
+ 'data': {}
+ })
+ api_core_v1_mock.create_namespaced_config_map.side_effect = Mock(side_effect=ApiException('409'))
+
+ config_map = K8sConfigMap('collection-ingester', 'sdap', local_config,
+ api_instance = api_instance,
+ api_core_v1_instance=api_core_v1_mock)
config_map.publish()