示例#1
0
 def setUp(self):
     self.nulecule_base = Nulecule_Base(dryrun=True)
     self.tmpdir = tempfile.mkdtemp(prefix="atomicapp-test", dir="/tmp")
     self.artifact_dir = os.path.dirname(
         __file__) + '/docker_artifact_test/'
     self.plugin = Plugin()
     self.plugin.load_plugins()
示例#2
0
class TestNuleculeBase(unittest.TestCase):
    def setUp(self):
        self.nulecule_base = Nulecule_Base(dryrun = True)
        self.tmpdir = tempfile.mkdtemp(prefix = "atomicapp-test", dir = "/tmp")
        self.plugin = Plugin()
        self.plugin.load_plugins()

    def tearDown(self):
        pass

    def create_temp_file(self):
        return tempfile.mktemp(prefix = "test-config", dir = self.tmpdir)

    def prepare_provider(self, data):
        self.nulecule_base.loadAnswers(data)
        provider_class = self.plugin.getProvider(self.nulecule_base.provider)
        config = self.nulecule_base.getValues(skip_asking=True)
        provider = provider_class(config, self.tmpdir, dryrun = False)

        return provider

    @mock.patch.object(KubernetesProvider, '_call', mock_provider_call)
    def test_provider_config_exist(self):
        provider_config_path = self.create_temp_file()
        mock_content = "%s_%s" % (MOCK_CONTENT, "_unchanged")
        with open(provider_config_path, "w") as fp:
            fp.write(mock_content)

        data = {'general': {'namespace': 'testing', 'provider': 'kubernetes', 'providerconfig': provider_config_path}}
        
        provider = self.prepare_provider(data)

        self.assertEqual(provider.config_file, provider_config_path)
        provider.checkConfigFile()
        with open(provider_config_path, "r") as fp:
            self.assertEqual(fp.read(), mock_content)

    @mock.patch("kubernetes.KubernetesProvider._call", mock_provider_call)
    def test_provider_check_config_generation(self):
        path = self.create_temp_file()
        data = {'general': {'namespace': 'testing', 'provider': 'kubernetes', 'providerconfig': path}}

        provider = self.prepare_provider(data)

        provider.checkConfigFile()
        with open(path, "r") as fp:
            self.assertEqual(fp.read(), MOCK_CONTENT)

    def test_provider_check_config_fail(self):
        path = self.create_temp_file()
        data = {'general': {'namespace': 'testing', 'provider': 'openshift'}}

        provider = self.prepare_provider(data)

        self.assertRaises(ProviderFailedException, provider.checkConfigFile)
示例#3
0
class TestDockerProviderBase(unittest.TestCase):

    # Create a temporary directory for our setup as well as load the required providers
    def setUp(self):
        self.nulecule_base = Nulecule_Base(dryrun=True)
        self.tmpdir = tempfile.mkdtemp(prefix="atomicapp-test", dir="/tmp")
        self.artifact_dir = os.path.dirname(
            __file__) + '/docker_artifact_test/'
        self.plugin = Plugin()
        self.plugin.load_plugins()

    def tearDown(self):
        pass

    # Lets prepare the docker provider with pre-loaded configuration
    def prepare_provider(self, data):
        self.nulecule_base.loadAnswers(data)
        provider_class = self.plugin.getProvider(self.nulecule_base.provider)
        config = self.nulecule_base.getValues(skip_asking=True)
        provider = provider_class(config, self.tmpdir, dryrun=True)
        return provider

    # Test deploying multiple artifacts within docker
    def test_multiple_artifact_load(self):
        data = {'general': {'namespace': 'test', 'provider': 'docker'}}
        provider = self.prepare_provider(data)
        provider.init()
        provider.artifacts = [
            self.artifact_dir + 'hello-world-one',
            self.artifact_dir + 'hello-world-two',
            self.artifact_dir + 'hello-world-three'
        ]
        # Mock the effects of 'docker ps -a'. As if each deployment adds the container to the host
        mock_container_list = mock.Mock(side_effect=[
            ["atomic_default_e9b9a7bfe8f9"],
            ["atomic_default_e9b9a7bfe8f9", "atomic_test_e9b9a7bfe8f9"],
            [
                "atomic_default_e9b9a7bfe8f9", "atomic_test_e9b9a7bfe8f9",
                "atomic_test_e9b9a7bfe8f9"
            ]
        ])
        with mock.patch("docker.DockerProvider._get_containers",
                        mock_container_list):
            provider.deploy()

    # Patch in a general container list and make sure it fails if there is already a container with the same name
    @mock.patch("docker.DockerProvider._get_containers", mock_name_get_call)
    def test_namespace_name_check(self):
        data = {'general': {'namespace': 'default', 'provider': 'docker'}}
        provider = self.prepare_provider(data)
        provider.init()
        provider.artifacts = [self.artifact_dir + 'hello-world-one']
        with pytest.raises(ProviderFailedException):
            provider.deploy()
示例#4
0
class TestDockerProviderBase(unittest.TestCase):
    
    # Create a temporary directory for our setup as well as load the required providers
    def setUp(self):
        self.nulecule_base = Nulecule_Base(dryrun = True)
        self.tmpdir = tempfile.mkdtemp(prefix = "atomicapp-test", dir = "/tmp")
        self.artifact_dir = os.path.dirname(__file__) + '/docker_artifact_test/'
        self.plugin = Plugin()
        self.plugin.load_plugins()

    def tearDown(self):
        pass
    
    # Lets prepare the docker provider with pre-loaded configuration
    def prepare_provider(self, data):
        self.nulecule_base.loadAnswers(data)
        provider_class = self.plugin.getProvider(self.nulecule_base.provider)
        config = self.nulecule_base.getValues(skip_asking=True)
        provider = provider_class(config, self.tmpdir, dryrun = True)
        return provider

    # Test deploying multiple artifacts within docker
    def test_multiple_artifact_load(self):
        data = {'general': {'namespace': 'test', 'provider': 'docker'}}
        provider = self.prepare_provider(data)
        provider.init()
        provider.artifacts = [
                self.artifact_dir + 'hello-world-one',
                self.artifact_dir + 'hello-world-two',
                self.artifact_dir + 'hello-world-three'
                ]
        # Mock the effects of 'docker ps -a'. As if each deployment adds the container to the host
        mock_container_list = mock.Mock(side_effect = [
            ["atomic_default_e9b9a7bfe8f9"], 
            ["atomic_default_e9b9a7bfe8f9", "atomic_test_e9b9a7bfe8f9"],
            ["atomic_default_e9b9a7bfe8f9", "atomic_test_e9b9a7bfe8f9", "atomic_test_e9b9a7bfe8f9"]
            ])
        with mock.patch("docker.DockerProvider._get_containers", mock_container_list):
            provider.deploy()

   
    # Patch in a general container list and make sure it fails if there is already a container with the same name 
    @mock.patch("docker.DockerProvider._get_containers", mock_name_get_call)
    def test_namespace_name_check(self):
        data = {'general': {'namespace': 'default', 'provider': 'docker'}}
        provider = self.prepare_provider(data)
        provider.init()
        provider.artifacts = [self.artifact_dir + 'hello-world-one']
        with pytest.raises(ProviderFailedException):
            provider.deploy()
示例#5
0
class TestNuleculeBase(unittest.TestCase):

    def setUp(self):
        self.nulecule_base = Nulecule_Base(
            dryrun=True,
            cli_provider="kubernetes")

    def tearDown(self):
        pass

    def test_answers_config(self):
        data = {'general': {'namespace': 'testing', 'provider': 'kubernetes'}}
        self.nulecule_base.loadAnswers(data)
        config = self.nulecule_base.getValues()
        self.assertEqual(config["namespace"], "testing")

    def test_answers_config_with_skip(self):
        data = {'general': {'namespace': 'testing', 'provider': 'kubernetes'}}
        self.nulecule_base.loadAnswers(data)
        config = self.nulecule_base.getValues(skip_asking=True)
        self.assertEqual(config["namespace"], "testing")
 def setUp(self):
     self.nulecule_base = Nulecule_Base(dryrun = True)
     self.tmpdir = tempfile.mkdtemp(prefix = "atomicapp-test", dir = "/tmp")
     self.plugin = Plugin()
     self.plugin.load_plugins()
示例#7
0
 def setUp(self):
     self.nulecule_base = Nulecule_Base(
         dryrun=True,
         cli_provider="kubernetes")
 def setUp(self):
     self.nulecule_base = Nulecule_Base(dryrun=True)
     self.tmpdir = tempfile.mkdtemp(prefix="atomicapp-test", dir="/tmp")
     self.plugin = Plugin()
     self.plugin.load_plugins()
class TestKubernetesProviderBase(unittest.TestCase):
    def setUp(self):
        self.nulecule_base = Nulecule_Base(dryrun=True)
        self.tmpdir = tempfile.mkdtemp(prefix="atomicapp-test", dir="/tmp")
        self.plugin = Plugin()
        self.plugin.load_plugins()

    def tearDown(self):
        pass

    def create_temp_file(self):
        return tempfile.mktemp(prefix="test-config", dir=self.tmpdir)

    def prepare_provider(self, data):
        self.nulecule_base.loadAnswers(data)
        provider_class = self.plugin.getProvider(self.nulecule_base.provider)
        config = self.nulecule_base.getValues(skip_asking=True)
        provider = provider_class(config, self.tmpdir, dryrun=False)

        return provider

    @mock.patch.object(KubernetesProvider, '_call', mock_provider_call)
    def test_provider_config_exist(self):
        provider_config_path = self.create_temp_file()
        mock_content = "%s_%s" % (MOCK_CONTENT, "_unchanged")
        with open(provider_config_path, "w") as fp:
            fp.write(mock_content)

        data = {
            'general': {
                'namespace': 'testing',
                'provider': 'kubernetes',
                'providerconfig': provider_config_path
            }
        }

        provider = self.prepare_provider(data)

        self.assertEqual(provider.config_file, provider_config_path)
        provider.checkConfigFile()
        with open(provider_config_path, "r") as fp:
            self.assertEqual(fp.read(), mock_content)

    @mock.patch("kubernetes.KubernetesProvider._call", mock_provider_call)
    def test_provider_check_config_generation(self):
        path = self.create_temp_file()
        data = {
            'general': {
                'namespace': 'testing',
                'provider': 'kubernetes',
                'providerconfig': path
            }
        }

        provider = self.prepare_provider(data)

        provider.checkConfigFile()
        with open(path, "r") as fp:
            self.assertEqual(fp.read(), MOCK_CONTENT)

    def test_provider_check_config_fail(self):
        path = self.create_temp_file()
        data = {'general': {'namespace': 'testing', 'provider': 'openshift'}}
        provider = self.prepare_provider(data)

        self.assertRaises(ProviderFailedException, provider.checkConfigFile)
示例#10
0
 def setUp(self):
     self.nulecule_base = Nulecule_Base(dryrun = True)
     self.tmpdir = tempfile.mkdtemp(prefix = "atomicapp-test", dir = "/tmp")
     self.artifact_dir = os.path.dirname(__file__) + '/docker_artifact_test/'
     self.plugin = Plugin()
     self.plugin.load_plugins()