def test_classify_resource_raw(self, mock):
        """test classify resource with a known set inserted in the mock"""
        self.init_users(mock)
        self.init_filters(mock)
        self.init_resources(mock)
        classify = ClassifyResources('/fakedir')
        tuple = classify.classify_resource_raw(classify.map.vms, 'region0')
        # Bad region
        self.assertEquals(len(tuple[0]),
                          # community in region1 but not in region0
                          self.count_resources_by_tenant['cpi_4'] +
                          # trial in region1 but not in region0
                          self.count_resources_by_tenant['cpi_5'])
        # Basic + other roles + no role
        self.assertEquals(len(tuple[1]),
                          # basic
                          self.count_resources_by_tenant['cpi_1'] +
                          self.count_resources_by_tenant['cpi_2'] +
                          # other type
                          self.count_resources_by_tenant['cpi_8'] +
                          # unknown type (no role)
                          self.count_resources_by_tenant['cpi_7'] +
                          self.count_resources_by_tenant['cpi_9'])
        # Projects with unknown user
        self.assertEquals(len(tuple[2]),
                          self.count_resources_by_tenant['dpi_1'] +
                          self.count_resources_by_tenant['1000'])

        # Projects with cloudid that does not exists
        self.assertEquals(len(tuple[3]),
                          self.count_resources_by_tenant['fake'])
    def test_classify_resource_raw(self, mock):
        """test classify resource with a known set inserted in the mock"""
        self.init_users(mock)
        self.init_filters(mock)
        self.init_resources(mock)
        classify = ClassifyResources('/fakedir')
        tuple = classify.classify_resource_raw(classify.map.vms, 'region0')
        # Bad region
        self.assertEquals(
            len(tuple[0]),
            # community in region1 but not in region0
            self.count_resources_by_tenant['cpi_4'] +
            # trial in region1 but not in region0
            self.count_resources_by_tenant['cpi_5'])
        # Basic + other roles + no role
        self.assertEquals(
            len(tuple[1]),
            # basic
            self.count_resources_by_tenant['cpi_1'] +
            self.count_resources_by_tenant['cpi_2'] +
            # other type
            self.count_resources_by_tenant['cpi_8'] +
            # unknown type (no role)
            self.count_resources_by_tenant['cpi_7'] +
            self.count_resources_by_tenant['cpi_9'])
        # Projects with unknown user
        self.assertEquals(
            len(tuple[2]), self.count_resources_by_tenant['dpi_1'] +
            self.count_resources_by_tenant['1000'])

        # Projects with cloudid that does not exists
        self.assertEquals(len(tuple[3]),
                          self.count_resources_by_tenant['fake'])
    def test_print_users_summary(self, mock):
        """This method only prints the results already calculated in
        process users, therefore this method only checks that execution ends
        without errors"""

        self.init_users(mock)
        self.init_filters(mock)
        classify = ClassifyResources('/fakedir', ['region0', 'region1'])
        classify.print_users_summary()
    def test_print_users_summary(self, mock):
        """This method only prints the results already calculated in
        process users, therefore this method only checks that execution ends
        without errors"""

        self.init_users(mock)
        self.init_filters(mock)
        classify = ClassifyResources('/fakedir', ['region0', 'region1'])
        classify.print_users_summary()
 def test_classify_filter_projects(self, mock):
     """Check the filter_projects methods. The tenant-id that has filters
     and don't include the region, must be discarded. Project without
     filters or with the region's filter, should pass the filter"""
     self.init_users(mock)
     self.init_filters(mock)
     classify = ClassifyResources('/fakedir')
     projects = ['cpi_1', 'cpi_3', 'cpi_7', 'cpi_15']
     filtered = classify.filter_projects(projects, 'region1')
     self.assertItemsEqual(filtered, ['cpi_1', 'cpi_7', 'cpi_15'])
 def test_classify_filter_projects(self, mock):
     """Check the filter_projects methods. The tenant-id that has filters
     and don't include the region, must be discarded. Project without
     filters or with the region's filter, should pass the filter"""
     self.init_users(mock)
     self.init_filters(mock)
     classify = ClassifyResources('/fakedir')
     projects = ['cpi_1', 'cpi_3', 'cpi_7', 'cpi_15']
     filtered = classify.filter_projects(projects, 'region1')
     self.assertItemsEqual(filtered, ['cpi_1', 'cpi_7', 'cpi_15'])
 def test_classify_resource(self, mock):
     """check classify resource, that classify_resource_raw is invoked
     with the right parameters; this is tested comparing the result with
     the VM resources, that must return the same numbers"""
     self.init_users(mock)
     self.init_filters(mock)
     self.init_resources(mock)
     classify = ClassifyResources('/fakedir')
     tuple1 = classify.classify_resource_raw(classify.map.vms, 'region0')
     tuple2 = classify.classify_resource('volumes', 'region0')
     for i in range(4):
         self.assertEquals(len(tuple1[i]), len(tuple2[i]))
 def test_classify_resource(self, mock):
     """check classify resource, that classify_resource_raw is invoked
     with the right parameters; this is tested comparing the result with
     the VM resources, that must return the same numbers"""
     self.init_users(mock)
     self.init_filters(mock)
     self.init_resources(mock)
     classify = ClassifyResources('/fakedir')
     tuple1 = classify.classify_resource_raw(classify.map.vms, 'region0')
     tuple2 = classify.classify_resource('volumes', 'region0')
     for i in range(4):
         self.assertEquals(len(tuple1[i]), len(tuple2[i]))
 def testConstructorRegions(self, mock):
     """check constructor with a list of regions as parameter"""
     classify = ClassifyResources('/fakedir', ['region0', 'region1'])
     self.assertTrue(mock.return_value.preload_regions.called)
     self.assertTrue(mock.return_value.filters.values.called)
     self.assertTrue(mock.return_value.users.values.called)
     self.assertTrue(mock.return_value.tenants.keys.called)
 def testConstructorFilter(self, mock):
     """test constructor providing filters in the mock"""
     self.init_filters(mock)
     classify = ClassifyResources('/fakedir')
     self.assertEquals(classify.empty_filter, 3)
     self.assertEquals(classify.filter_by_region['region0'], 0)
     self.assertEquals(classify.filter_by_region['region1'], 1)
     self.assertEquals(classify.filter_by_region['region2'], 2)
 def testConstructorOfflineMode(self, mock):
     """check constructor with offline_mode=True"""
     classify = ClassifyResources('/fakedir', offline_mode=True)
     mock.assert_called_with('/fakedir',
                             objects_strategy=mock.USE_CACHE_OBJECTS_ONLY)
     self.assertFalse(mock.return_value.preload_regions.called)
     self.assertTrue(mock.return_value.filters.values.called)
     self.assertTrue(mock.return_value.users.values.called)
     self.assertTrue(mock.return_value.tenants.keys.called)
    def testConstructorBasic(self, mock):
        """check constructor without parameters"""
        classify = ClassifyResources('/fakedir')
        mock.assert_called_with('/fakedir',
                                objects_strategy=mock.USE_CACHE_OBJECTS)

        self.assertFalse(mock.return_value.preload_regions.called)
        self.assertTrue(mock.return_value.filters.values.called)
        self.assertTrue(mock.return_value.users.values.called)
        self.assertTrue(mock.return_value.tenants.keys.called)
    def test_constructor_process_users(self, mock):
        """Test that the process_users method that is invoked from the
        constructor, fills correctly all the data"""
        self.init_users(mock)
        classify = ClassifyResources('/fakedir')

        self.assertEquals(classify.admin_users, {'7'})
        self.assertEquals(classify.trial_users, {'5', '6'})
        self.assertEquals(classify.community_users, {'3', '4'})
        self.assertEquals(classify.basic_users, {'1', '2'})
        self.assertEquals(classify.other_users, {'8'})
        self.assertEquals(classify.not_found_users, {'9', '10'})

        # Broken users can be of any of the other types (not found, basic...)
        self.assertEquals(classify.broken_users, {'10'})

        self.assertEquals(
            classify.user_cloud_projects, {
                'cpi_1', 'cpi_2', 'cpi_3', 'cpi_4', 'cpi_5', 'cpi_6', 'cpi_7',
                'cpi_8', 'cpi_9', 'cpi_10'
            })

        self.assertEquals(
            classify.user_default_projects, {
                'dpi_1', 'dpi_2', 'dpi_3', 'dpi_4', 'dpi_5', 'dpi_6', 'dpi_7',
                'dpi_8', 'dpi_9', 'dpi_10'
            })

        self.assertEquals(classify.comtrialadmin_cloud_projects,
                          {'cpi_3', 'cpi_4', 'cpi_5', 'cpi_6', 'dpi_7'})
        self.assertEquals(classify.basic_cloud_projects, {'cpi_1', 'cpi_2'})
        self.assertEquals(classify.community_cloud_projects,
                          {'cpi_3', 'cpi_4'})
        self.assertEquals(classify.trial_cloud_projects, {'cpi_5', 'cpi_6'})
        self.assertEquals(classify.admin_cloud_projects, {'dpi_7'})
        self.assertEquals(classify.other_users_cloud_projects, {'cpi_8'})
        self.assertEquals(classify.not_found_cloud_projects,
                          {'cpi_9', 'cpi_10'})
        self.assertEquals(classify.broken_users_projects, {'cpi_10'})
        self.assertTrue(True)