Skip to content

Commit

Permalink
Added scaling test for namespaces
Browse files Browse the repository at this point in the history
Added a new scaling test function which creates many namespace resources
to check if the system can handle such scenario.

Change-Id: I17d8f7324e2672130c5c7a338e882081a55bc94c
Closes-Bug: #1721007
  • Loading branch information
xbend committed Oct 3, 2017
1 parent a7a1855 commit 958775a
Showing 1 changed file with 41 additions and 20 deletions.
Expand Up @@ -2,26 +2,23 @@
# Copyright (c) 2017 Juniper Networks, Inc. All rights reserved.
#

import unittest
import uuid

from kube_manager.tests.vnc.test_case import KMTestCase
from kube_manager.vnc import vnc_kubernetes_config as kube_config
from kube_manager.vnc.vnc_namespace import NamespaceKM

class VncNamespaceTestClusterProjectDefined(KMTestCase):
class VncNamespaceTest(KMTestCase):
def setUp(self, extra_config_knobs=None):
super(VncNamespaceTestClusterProjectDefined, self).setUp(
super(VncNamespaceTest, self).setUp(
extra_config_knobs=extra_config_knobs)
#end setUp

def tearDown(self):
super(VncNamespaceTestClusterProjectDefined, self).tearDown()
#end tearDown
super(VncNamespaceTest, self).tearDown()

@classmethod
def setUpClass(cls, extra_config_knobs=None):
super(VncNamespaceTestClusterProjectDefined, cls).setUpClass(
super(VncNamespaceTest, cls).setUpClass(
extra_config_knobs=extra_config_knobs)
cls.domain = 'default-domain'
cls.cluster_project = 'test-project'
Expand All @@ -46,6 +43,14 @@ def _create_and_add_namespace(self, name, spec, annotations,
self.wait_for_all_tasks_done()
return ns_uuid

class VncNamespaceTestClusterProjectDefined(VncNamespaceTest):
def setUp(self, extra_config_knobs=None):
super(VncNamespaceTestClusterProjectDefined, self).setUp(
extra_config_knobs=extra_config_knobs)

def tearDown(self):
super(VncNamespaceTestClusterProjectDefined, self).tearDown()

def test_add_namespace(self):
ns_uuid = self._create_and_add_namespace(self.ns_name, {}, None)

Expand All @@ -61,7 +66,8 @@ def test_add_namespace(self):
def test_add_namespace_with_isolation_annotation(self):
ns_annotations = {'opencontrail.org/isolation': "true"}

ns_uuid = self._create_and_add_namespace(self.ns_name, {}, ns_annotations, True)
ns_uuid = self._create_and_add_namespace(self.ns_name, {},
ns_annotations, True)

proj = self._vnc_lib.project_read(fq_name=["default-domain",
self.cluster_project])
Expand All @@ -81,11 +87,9 @@ class VncNamespaceTestClusterProjectUndefined(
def setUp(self, extra_config_knobs=None):
super(VncNamespaceTestClusterProjectUndefined, self).setUp(
extra_config_knobs=extra_config_knobs)
#end setUp

def tearDown(self):
super(VncNamespaceTestClusterProjectUndefined, self).tearDown()
#end tearDown

@classmethod
def setUpClass(cls, extra_config_knobs=None):
Expand All @@ -99,15 +103,13 @@ def setUpClass(cls, extra_config_knobs=None):
kube_config.VncKubernetesConfig.args().cluster_network = None


class VncNamespaceTestCustomNetwork(VncNamespaceTestClusterProjectDefined):
class VncNamespaceTestCustomNetwork(VncNamespaceTest):
def setUp(self, extra_config_knobs=None):
super(VncNamespaceTestCustomNetwork, self).setUp(
extra_config_knobs=extra_config_knobs)
#end setUp

def tearDown(self):
super(VncNamespaceTestCustomNetwork, self).tearDown()
#end tearDown

@classmethod
def setUpClass(cls, extra_config_knobs=None):
Expand All @@ -122,7 +124,6 @@ def setUpClass(cls, extra_config_knobs=None):
kube_config.VncKubernetesConfig.args().cluster_network = None

def test_add_namespace_with_custom_network_annotation(self):
# Create network for Pod
proj_fq_name = [self.domain, self.cluster_project]
proj_obj = self._vnc_lib.project_read(fq_name=proj_fq_name)

Expand All @@ -145,10 +146,30 @@ def test_add_namespace_with_custom_network_annotation(self):
vn = self._vnc_lib.virtual_network_read(fq_name=fqname)
self.assertIsNotNone(vn)

@unittest.skip('Skipping. Test irrelevant for class.')
def test_add_namespace(self):
pass
class VncNamespaceTestScaling(VncNamespaceTest):
def setUp(self, extra_config_knobs=None):
super(VncNamespaceTestScaling, self).setUp(
extra_config_knobs=extra_config_knobs)

@unittest.skip('Skipping. Test irrelevant for class.')
def test_add_namespace_with_isolation_annotation(self):
pass
def tearDown(self):
super(VncNamespaceTestScaling, self).tearDown()

def test_add_namespace_scaling(self):
scale = 100
ns_uuids = []

for i in xrange(scale):
ns_uuid = self._create_and_add_namespace(self.ns_name + str(i), {},
None)
proj = self._vnc_lib.project_read(fq_name=["default-domain",
self.cluster_project])
self.assertIsNotNone(proj)
self.assertEquals(self.cluster_project, proj.name)

ns_uuids.append(ns_uuid)

for i, ns_uuid in enumerate(ns_uuids):
ns = NamespaceKM.find_by_name_or_uuid(ns_uuid)
if ns:
NamespaceKM.delete(ns_uuid)
NamespaceKM.delete(ns.name)

0 comments on commit 958775a

Please sign in to comment.