blob: 3a8e9a35ac020e7c5014f138867f5003ca8c374e [file] [log] [blame]
#!/usr/bin/python3
# Copyright 2021 Canonical Ltd.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# 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.
#
# For those usages not covered by the Apache License, Version 2.0 please
# contact: legal@canonical.com
#
# To get in touch with the maintainers, please contact:
# osm-charmers@lists.launchpad.net
##
import unittest
import zaza.model as model
from pymongo import MongoClient
def get_mongo_uri():
mongo_uri = "mongodb://"
mongo_units = model.get_status().applications["mongodb-k8s"]["units"]
for i, unit_name in enumerate(mongo_units.keys()):
if i:
mongo_uri += ","
unit_ip = mongo_units[unit_name]["address"]
unit_port = mongo_units[unit_name]["opened-ports"][0].split("/")[0]
mongo_uri += "{}:{}".format(unit_ip, unit_port)
return mongo_uri
class BasicDeployment(unittest.TestCase):
def test_get_mongo_uri(self):
get_mongo_uri()
def test_mongodb_connection(self):
mongo_uri = get_mongo_uri()
client = MongoClient(mongo_uri)
client.server_info()
def test_mongodb_create_empty_database_collection(self):
mongo_uri = get_mongo_uri()
client = MongoClient(mongo_uri)
DB_NAME = "test_database"
COLLECTION_NAME = "test_collection"
db = client[DB_NAME]
_ = client.list_database_names()
collection = db[COLLECTION_NAME]
_ = db.list_collection_names()
data = {}
id = collection.insert_one(data)
for x in collection.find({"_id": id.inserted_id}):
self.assertEqual(id.inserted_id, x["_id"])
def test_mongodb_insert_one(self):
mongo_uri = get_mongo_uri()
client = MongoClient(mongo_uri)
DB_NAME = "test_database"
COLLECTION_NAME = "test_collection"
db = client[DB_NAME]
_ = client.list_database_names()
collection = db[COLLECTION_NAME]
_ = db.list_collection_names()
data = {
"name": "Canonical LTD",
"address": "5th Floor of the Blue Fin Building",
}
id = collection.insert_one(data)
for x in collection.find({"_id": id.inserted_id}):
self.assertEqual(id.inserted_id, x["_id"])
def test_mongodb_insert_many(self):
mongo_uri = get_mongo_uri()
client = MongoClient(mongo_uri)
DB_NAME = "test_database"
COLLECTION_NAME = "test_collection"
db = client[DB_NAME]
_ = client.list_database_names()
collection = db[COLLECTION_NAME]
_ = db.list_collection_names()
data = [
{"name": "Amy", "address": "Apple st 652"},
{"name": "Hannah", "address": "Mountain 21"},
{"name": "Michael", "address": "Valley 345"},
{"name": "Sandy", "address": "Ocean blvd 2"},
{"name": "Betty", "address": "Green Grass 1"},
{"name": "Richard", "address": "Sky st 331"},
{"name": "Susan", "address": "One way 98"},
{"name": "Vicky", "address": "Yellow Garden 2"},
{"name": "Ben", "address": "Park Lane 38"},
{"name": "William", "address": "Central st 954"},
{"name": "Chuck", "address": "Main Road 989"},
{"name": "Viola", "address": "Sideway 1633"},
]
ids = collection.insert_many(data)
for id in ids.inserted_ids:
x = collection.find_one({"_id": id})
self.assertEqual(x["_id"], id)