def setUp(self, m_etcd_client, m_getenv): def get_env(key, default=""): if key == "ETCD_AUTHORITY": return "127.0.0.2:4002" else: return default m_getenv.side_effect = get_env self.etcd_client = Mock(spec=EtcdClient) m_etcd_client.return_value = self.etcd_client self.datastore = LibnetworkDatastoreClient() m_etcd_client.assert_called_once_with(host="127.0.0.2", port=4002, protocol="http", cert=None, ca_cert=None)
# # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import unittest from nose.tools import assert_equal, assert_true, assert_false from libnetwork.datastore_libnetwork import LibnetworkDatastoreClient # We test using a real etcd back end. client = LibnetworkDatastoreClient() TEST_ENDPOINT_ID = "abcdefg123456" class TestLibnetworkDatastoreClient(unittest.TestCase): def setUp(self): client.remove_all_data() def test_cnm_endpoint_read_write(self): """ Test reading and writing an CNM endpoint. """ data = {"test": 1, "test2": 2} # Endpoint should not exist at first, attempts to read it return None.
class TestLibnetworkDatastoreClient(unittest.TestCase): @patch("pycalico.datastore.os.getenv", autospec=True) @patch("pycalico.datastore.etcd.Client", autospec=True) def setUp(self, m_etcd_client, m_getenv): def get_env(key, default=""): if key == "ETCD_AUTHORITY": return "127.0.0.2:4002" else: return default m_getenv.side_effect = get_env self.etcd_client = Mock(spec=EtcdClient) m_etcd_client.return_value = self.etcd_client self.datastore = LibnetworkDatastoreClient() m_etcd_client.assert_called_once_with(host="127.0.0.2", port=4002, protocol="http", cert=None, ca_cert=None) def tearDown(self): pass def test_get_network(self): """ Test get_network() returns correct data. :return: """ etcd_entry = Mock() etcd_entry.value = TEST_JSON self.etcd_client.read.return_value = etcd_entry self.assertDictEqual(self.datastore.get_network(TEST_NETWORK_ID), TEST_DATA) self.etcd_client.read.assert_called_once_with(TEST_NETWORK_DIR) def test_get_network_not_found(self): """ Test get_network() returns None when the network is not found. :return: """ self.etcd_client.read.side_effect = EtcdKeyNotFound self.assertEquals(self.datastore.get_network(TEST_NETWORK_ID), None) self.etcd_client.read.assert_called_once_with(TEST_NETWORK_DIR) def test_write_network(self): """ Test write_network() sends correct data to etcd. """ test_data = TEST_DATA self.datastore.write_network(TEST_NETWORK_ID, test_data) self.etcd_client.write.assert_called_once_with(TEST_NETWORK_DIR, TEST_JSON) def test_remove_network(self): """ Test remove_network() when the network is present. """ self.assertTrue(self.datastore.remove_network(TEST_NETWORK_ID)) self.etcd_client.delete.assert_called_once_with(TEST_NETWORK_DIR) def test_remove_network_not_found(self): """ Test remove_network() when the network is not found. """ self.etcd_client.delete.side_effect = EtcdKeyNotFound self.assertFalse(self.datastore.remove_network(TEST_NETWORK_ID)) self.etcd_client.delete.assert_called_once_with(TEST_NETWORK_DIR)