moon_db python unit test init 09/49109/1
authorWuKong <rebirthmonkey@gmail.com>
Fri, 15 Dec 2017 20:43:14 +0000 (21:43 +0100)
committerWuKong <rebirthmonkey@gmail.com>
Fri, 15 Dec 2017 20:43:14 +0000 (21:43 +0100)
Change-Id: Iba8deac5177c3499c89d6742874d3daf9fe3289a
Signed-off-by: WuKong <rebirthmonkey@gmail.com>
moonv4/moon_db/README.md
moonv4/moon_db/tests/unit_python/conftest.py
moonv4/moon_db/tests/unit_python/mock_components.py [new file with mode: 0644]
moonv4/moon_db/tests/unit_python/mock_keystone.py [new file with mode: 0644]
moonv4/moon_db/tests/unit_python/utilities.py [new file with mode: 0644]
moonv4/moon_utilities/README.md

index 565b96f..5aa877f 100644 (file)
@@ -9,21 +9,24 @@ For any other information, refer to the parent project:
 
 ## Build
 ### Build Python Package
-- `cd ${MOON_HOME}/moonv4/moon_utilities/`
-- `python3 setup.py sdist bdist_wheel`
-
-### Upload moon_db to PIP
-- `python setup.py upload`
-or 
-- `gpg --detach-sign -u "${GPG_ID}" -a dist/moon_db-X.Y.Z-py3-none-any.whl`
-- `gpg --detach-sign -u "${GPG_ID}" -a dist/moon_db-X.Y.Z.tar.gz`
-- `twine upload dist/moon_db-X.Y.Z-py3-none-any.whl dist/moon_db-X.Y.Z-py3-none-any.whl.asc`
-- `twine upload dist/moon_db-X.Y.Z.tar.gz dist/moon_db-X.Y.Z.tar.gz.asc`
-
+```bash
+cd ${MOON_HOME}/moonv4/moon_db
+python3 setup.py sdist bdist_wheel
+```
+
+### Push Python Package to PIP
+```bash
+cd ${MOON_HOME}/moonv4/moon_db
+gpg --detach-sign -u "${GPG_ID}" -a dist/moon_db-X.Y.Z-py3-none-any.whl
+gpg --detach-sign -u "${GPG_ID}" -a dist/moon_db-X.Y.Z.tar.gz
+twine upload dist/moon_db-X.Y.Z-py3-none-any.whl dist/moon_db-X.Y.Z-py3-none-any.whl.asc
+twine upload dist/moon_db-X.Y.Z.tar.gz dist/moon_db-X.Y.Z.tar.gz.asc
+```
 
 ## Test
 ### Python Unit Test
 launch Docker for Python unit tests
-- `cd ${MOON_HOME}/moonv4/moon_utilities`
-- `docker run --rm --volume $(pwd):/data wukongsun/moon_python_unit_test:latest`
-
+```bash
+cd ${MOON_HOME}/moonv4/moon_db
+docker run --rm --volume $(pwd):/data wukongsun/moon_python_unit_test:latest
+```
\ No newline at end of file
index b9f38d7..c2e5e57 100644 (file)
@@ -4,6 +4,8 @@ import logging
 import os
 import pytest
 import requests_mock
+import mock_components
+import mock_keystone
 
 CONF = {
     "openstack": {
@@ -120,34 +122,6 @@ CONF = {
     }
 }
 
-COMPONENTS = (
-    "logging",
-    "openstack/keystone",
-    "database",
-    "slave",
-    "components/manager",
-    "components/orchestrator",
-    "components/interface",
-)
-
-
-def get_b64_conf(component=None):
-    if component == "components":
-        return base64.b64encode(
-            json.dumps(CONF["components"]).encode('utf-8')+b"\n").decode('utf-8')
-    elif component in CONF:
-        return base64.b64encode(
-            json.dumps(
-                CONF[component]).encode('utf-8')+b"\n").decode('utf-8')
-    elif not component:
-        return base64.b64encode(
-            json.dumps(CONF).encode('utf-8')+b"\n").decode('utf-8')
-    elif "/" in component:
-        key1, _, key2 = component.partition("/")
-        return base64.b64encode(
-            json.dumps(
-                CONF[key1][key2]).encode('utf-8')+b"\n").decode('utf-8')
-
 
 @pytest.fixture
 def db():
@@ -159,39 +133,9 @@ def set_consul_and_db(monkeypatch):
     """ Modify the response from Requests module
     """
     with requests_mock.Mocker(real_http=True) as m:
-        for component in COMPONENTS:
-            m.register_uri(
-                'GET', 'http://consul:8500/v1/kv/{}'.format(component),
-                json=[{'Key': component, 'Value': get_b64_conf(component)}]
-                )
-        m.register_uri(
-            'GET', 'http://consul:8500/v1/kv/components?recurse=true',
-            json=[
-                {"Key": key, "Value": get_b64_conf(key)} for key in COMPONENTS
-            ],
-            )
-        m.register_uri(
-            'POST', 'http://keystone:5000/v3/auth/tokens',
-            headers={'X-Subject-Token': "111111111"}
-        )
-        m.register_uri(
-            'DELETE', 'http://keystone:5000/v3/auth/tokens',
-            headers={'X-Subject-Token': "111111111"}
-        )
-        m.register_uri(
-            'POST', 'http://keystone:5000/v3/users?name=testuser&domain_id=default',
-            json={"users": {}}
-        )
-        m.register_uri(
-            'GET', 'http://keystone:5000/v3/users?name=testuser&domain_id=default',
-            json={"users": {}}
-        )
-        m.register_uri(
-            'POST', 'http://keystone:5000/v3/users/',
-            json={"users": [{
-                "id": "1111111111111"
-            }]}
-        )
+        mock_components.register_components(m)
+        mock_keystone.register_keystone(m)
+
         from moon_db.db_manager import init_engine, main
         engine = init_engine()
         main("upgrade", logging.getLogger("db_manager"), engine)
diff --git a/moonv4/moon_db/tests/unit_python/mock_components.py b/moonv4/moon_db/tests/unit_python/mock_components.py
new file mode 100644 (file)
index 0000000..a0319e1
--- /dev/null
@@ -0,0 +1,27 @@
+import utilities
+
+COMPONENTS = (
+    "logging",
+    "openstack/keystone",
+    "database",
+    "slave",
+    "components/manager",
+    "components/orchestrator",
+    "components/interface",
+)
+
+
+def register_components(m):
+    for component in COMPONENTS:
+        m.register_uri(
+            'GET', 'http://consul:8500/v1/kv/{}'.format(component),
+            json=[{'Key': component, 'Value': utilities.get_b64_conf(component)}]
+        )
+
+    m.register_uri(
+        'GET', 'http://consul:8500/v1/kv/components?recurse=true',
+        json=[
+            {"Key": key, "Value": utilities.get_b64_conf(key)} for key in COMPONENTS
+            ],
+        # json={'Key': "components", 'Value': get_b64_conf("components")}
+    )
\ No newline at end of file
diff --git a/moonv4/moon_db/tests/unit_python/mock_keystone.py b/moonv4/moon_db/tests/unit_python/mock_keystone.py
new file mode 100644 (file)
index 0000000..c0b26b8
--- /dev/null
@@ -0,0 +1,23 @@
+def register_keystone(m):
+    m.register_uri(
+        'POST', 'http://keystone:5000/v3/auth/tokens',
+        headers={'X-Subject-Token': "111111111"}
+    )
+    m.register_uri(
+        'DELETE', 'http://keystone:5000/v3/auth/tokens',
+        headers={'X-Subject-Token': "111111111"}
+    )
+    m.register_uri(
+        'POST', 'http://keystone:5000/v3/users?name=testuser&domain_id=default',
+        json={"users": {}}
+    )
+    m.register_uri(
+        'GET', 'http://keystone:5000/v3/users?name=testuser&domain_id=default',
+        json={"users": {}}
+    )
+    m.register_uri(
+        'POST', 'http://keystone:5000/v3/users/',
+        json={"users": [{
+            "id": "1111111111111"
+        }]}
+    )
\ No newline at end of file
diff --git a/moonv4/moon_db/tests/unit_python/utilities.py b/moonv4/moon_db/tests/unit_python/utilities.py
new file mode 100644 (file)
index 0000000..1d79d89
--- /dev/null
@@ -0,0 +1,136 @@
+import base64
+import json
+
+
+CONF = {
+    "openstack": {
+        "keystone": {
+            "url": "http://keystone:5000/v3",
+            "user": "admin",
+            "check_token": False,
+            "password": "p4ssw0rd",
+            "domain": "default",
+            "certificate": False,
+            "project": "admin"
+        }
+    },
+    "components": {
+        "wrapper": {
+            "bind": "0.0.0.0",
+            "port": 8080,
+            "container": "wukongsun/moon_wrapper:v4.3",
+            "timeout": 5,
+            "hostname": "wrapper"
+        },
+        "manager": {
+            "bind": "0.0.0.0",
+            "port": 8082,
+            "container": "wukongsun/moon_manager:v4.3",
+            "hostname": "manager"
+        },
+        "port_start": 31001,
+        "orchestrator": {
+            "bind": "0.0.0.0",
+            "port": 8083,
+            "container": "wukongsun/moon_orchestrator:v4.3",
+            "hostname": "interface"
+        },
+        "interface": {
+            "bind": "0.0.0.0",
+            "port": 8080,
+            "container": "wukongsun/moon_interface:v4.3",
+            "hostname": "interface"
+        }
+    },
+    "plugins": {
+        "session": {
+            "port": 8082,
+            "container": "asteroide/session:latest"
+        },
+        "authz": {
+            "port": 8081,
+            "container": "wukongsun/moon_authz:v4.3"
+        }
+    },
+    "logging": {
+        "handlers": {
+            "file": {
+                "filename": "/tmp/moon.log",
+                "class": "logging.handlers.RotatingFileHandler",
+                "level": "DEBUG",
+                "formatter": "custom",
+                "backupCount": 3,
+                "maxBytes": 1048576
+            },
+            "console": {
+                "class": "logging.StreamHandler",
+                "formatter": "brief",
+                "level": "INFO",
+                "stream": "ext://sys.stdout"
+            }
+        },
+        "formatters": {
+            "brief": {
+                "format": "%(levelname)s %(name)s %(message)-30s"
+            },
+            "custom": {
+                "format": "%(asctime)-15s %(levelname)s %(name)s %(message)s"
+            }
+        },
+        "root": {
+            "handlers": [
+                "console"
+            ],
+            "level": "ERROR"
+        },
+        "version": 1,
+        "loggers": {
+            "moon": {
+                "handlers": [
+                    "console",
+                    "file"
+                ],
+                "propagate": False,
+                "level": "DEBUG"
+            }
+        }
+    },
+    "slave": {
+        "name": None,
+        "master": {
+            "url": None,
+            "login": None,
+            "password": None
+        }
+    },
+    "docker": {
+        "url": "tcp://172.88.88.1:2376",
+        "network": "moon"
+    },
+    "database": {
+        "url": "sqlite:///database.db",
+        # "url": "mysql+pymysql://moon:p4sswOrd1@db/moon",
+        "driver": "sql"
+    },
+    "messenger": {
+        "url": "rabbit://moon:p4sswOrd1@messenger:5672/moon"
+    }
+}
+
+
+def get_b64_conf(component=None):
+    if component == "components":
+        return base64.b64encode(
+            json.dumps(CONF["components"]).encode('utf-8')+b"\n").decode('utf-8')
+    elif component in CONF:
+        return base64.b64encode(
+            json.dumps(
+                CONF[component]).encode('utf-8')+b"\n").decode('utf-8')
+    elif not component:
+        return base64.b64encode(
+            json.dumps(CONF).encode('utf-8')+b"\n").decode('utf-8')
+    elif "/" in component:
+        key1, _, key2 = component.partition("/")
+        return base64.b64encode(
+            json.dumps(
+                CONF[key1][key2]).encode('utf-8')+b"\n").decode('utf-8')
index 5003b6c..bbc1d45 100644 (file)
@@ -10,24 +10,24 @@ moon_utilities is a common Python lib for other Moon Python packages
 
 ## Build
 ### Build Python Package
-```Bash
-cd moon_utilities
+```bash
+cd ${MOON_HOME}/moonv4/moon_utilities
 python3 setup.py sdist bdist_wheel
 ```
 
 ### Push Python Package to PIP
 ```bash
-cd moon_utilities
-gpg --detach-sign -u "${GPG_ID}" -a dist/moon_db-X.Y.Z-py3-none-any.whl
-gpg --detach-sign -u "${GPG_ID}" -a dist/moon_db-X.Y.Z.tar.gz
-twine upload dist/moon_db-X.Y.Z-py3-none-any.whl dist/moon_db-X.Y.Z-py3-none-any.whl.asc
-twine upload dist/moon_db-X.Y.Z.tar.gz dist/moon_db-X.Y.Z.tar.gz.asc
+cd ${MOON_HOME}/moonv4/moon_utilities
+gpg --detach-sign -u "${GPG_ID}" -a dist/moon_utilities-X.Y.Z-py3-none-any.whl
+gpg --detach-sign -u "${GPG_ID}" -a dist/moon_utilities-X.Y.Z.tar.gz
+twine upload dist/moon_db-X.Y.Z-py3-none-any.whl dist/moon_utilities-X.Y.Z-py3-none-any.whl.asc
+twine upload dist/moon_db-X.Y.Z.tar.gz dist/moon_uutilities-X.Y.Z.tar.gz.asc
 ```
 
 ## Test
 ### Python Unit Test
 launch Docker for Python unit tests
 ```bash
-cd moon_utilities
+cd ${MOON_HOME}/moonv4/moon_utilities
 docker run --rm --volume $(pwd):/data wukongsun/moon_python_unit_test:latest
 ```