def test_should_return_empty_running_environment_if_nothing_is_running(self):
     mock_command_helper = mock()
     when(mock_command_helper).run_command("sudo lxc-ls -c1").thenReturn("")
     provider = LXCNodeProvider(None, None, mock_command_helper)
     environment = provider.get_running_environment("test", "test", all_credentials)
     self.assertIsNotNone(environment)
     self.assertEqual(0, len(environment.get_locations()))
    def test_should_return_a_list_of_nodes_from_a_running_environment(self):
        mock_command_helper = mock()
        tags1 = """
                'services' :
                     'apache': {80: 80}
                'credentials_name': 'test'
                'env_name' : 'test'
                'env_def_name' : 'Single-AZ Deployment'
                """
        tags2 = """
                'services' :
                     'mongo': {81: 82}
                'credentials_name': 'test'
                'env_name' : 'test'
                'env_def_name' : 'Single-AZ Deployment'
                """
        when(mock_command_helper).run_command("sudo lxc-ls -c1").thenReturn("123\n124")
        when(mock_command_helper).run_command("if sudo [ -f /var/lib/lxc/123/tags ]; then sudo cat /var/lib/lxc/123/tags; else echo '{}'; fi").thenReturn(tags1)
        when(mock_command_helper).run_command("if sudo [ -f /var/lib/lxc/124/tags ]; then sudo cat /var/lib/lxc/124/tags; else echo '{}'; fi").thenReturn(tags2)
        when(mock_command_helper).run_command("sudo lxc-info -n 123").thenReturn("state: RUNNING")
        when(mock_command_helper).run_command("sudo lxc-info -n 124").thenReturn("state: RUNNING")

        provider = LXCNodeProvider(all_credentials, 'test_host', mock_command_helper)
        environment = provider.get_running_environment("test", "Single-AZ Deployment", all_credentials)

        self.assertIsNotNone(environment)
        self.assertEquals(1, len(environment.get_locations()))
        self.assertIsNotNone(environment.get_locations()[0].get_nodes())
        self.assertEquals('test_host', environment.get_locations()[0].get_name())

        node1 = environment.get_locations()[0].get_nodes()[0]
        self.assertIsNotNone(node1.get_services())
        self.assertEquals({'apache' : {80 : 80}}, node1.get_services())

        node2 = environment.get_locations()[0].get_nodes()[1]
        self.assertIsNotNone(node2.get_services())
        self.assertEquals({'mongo' : {81 : 82}}, node2.get_services())