f838c5a586e484ede1f7e93ee3bd1f1f2aa85d9a
1 # -*- coding: utf-8 -*-
3 # Copyright 2016-2019 VMware Inc.
4 # This file is part of ETSI OSM
7 # Licensed under the Apache License, Version 2.0 (the "License"); you may
8 # not use this file except in compliance with the License. You may obtain
9 # a copy of the License at
11 # http://www.apache.org/licenses/LICENSE-2.0
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16 # License for the specific language governing permissions and limitations
19 # For those usages not covered by the Apache License, Version 2.0 please
20 # contact: osslegalrouting@vmware.com
23 from osm_mon
.collector
.vnf_collectors
.vio
import VIOCollector
24 from osm_mon
.core
.config
import Config
25 from osm_mon
.tests
.unit
.collector
.vnf_collectors
.vmware
.mock_http
import (
28 from unittest
import TestCase
, mock
35 "vrops_site": "https://vrops",
45 class CollectorTest(TestCase
):
46 @mock.patch
.object(VIOCollector
, "get_vim_account", spec_set
=True, autospec
=True)
47 @mock.patch("osm_mon.collector.vnf_collectors.vio.CommonDbClient")
48 def setUp(self
, mock_db
, mock_get_vim_account
):
50 self
.mock_db
= mock_db
51 mock_get_vim_account
.return_value
= VIM_ACCOUNT
52 self
.collector
= VIOCollector(Config(), "9de6df67-b820-48c3-bcae-ee4838c5c5f4")
54 os
.path
.join(os
.path
.dirname(__file__
), "osm_mocks", "VNFR.json"), "r"
56 self
.vnfr
= json
.load(f
)
58 os
.path
.join(os
.path
.dirname(__file__
), "osm_mocks", "VNFD.json"), "r"
60 self
.vnfd
= json
.load(f
)
65 def test_collect_cpu_and_memory(self
):
66 self
.vnfd
["vdu"][0]["monitoring-parameter"] = [
67 {"id": "ubuntu_vnf_cpu_util", "performance-metric": "cpu_utilization"},
69 "id": "ubuntu_vnf_average_memory_utilization",
70 "performance-metric": "average_memory_utilization",
73 self
.mock_db
.return_value
.get_vnfd
.return_value
= self
.vnfd
74 with requests_mock
.Mocker() as mock_requests
:
78 url_pattern
="/suite-api/api/auth/token/acquire",
79 response_file
="vrops_token.json",
83 url_pattern
="/suite-api/api/resources\\?resourceKind=VirtualMachine",
84 response_file
="vrops_resources.json",
88 url_pattern
="/suite-api/api/resources/stats.*",
89 response_file
="vrops_multi.json",
91 metrics
= self
.collector
.collect(self
.vnfr
)
92 self
.assertEqual(len(metrics
), 4, "Number of metrics returned")
93 self
.assertEqual(metrics
[0].name
, "cpu_utilization", "First metric name")
94 self
.assertEqual(metrics
[0].value
, 100.0, "CPU metric value")
96 metrics
[1].name
, "average_memory_utilization", "Second metric name"
99 metrics
[1].value
, 20.515941619873047, "Memory metric value"
101 self
.assertEqual(metrics
[2].name
, "cpu_utilization", "First metric name")
102 self
.assertEqual(metrics
[2].value
, 0.05400000140070915, "CPU metric value")
104 metrics
[3].name
, "average_memory_utilization", "Second metric name"
106 self
.assertEqual(metrics
[3].value
, 15.23439884185791, "Memory metric value")
108 def test_collect_no_monitoring_param(self
):
109 self
.vnfd
["vdu"][0]["monitoring-parameter"] = []
110 self
.mock_db
.return_value
.get_vnfd
.return_value
= self
.vnfd
111 with requests_mock
.Mocker() as mock_requests
:
115 url_pattern
="/suite-api/api/auth/token/acquire",
116 response_file
="vrops_token.json",
120 url_pattern
="/suite-api/api/resources\\?resourceKind=VirtualMachine",
121 response_file
="vrops_resources.json",
125 url_pattern
="/suite-api/api/resources/stats.*",
126 response_file
="vrops_multi.json",
128 metrics
= self
.collector
.collect(self
.vnfr
)
129 self
.assertEqual(len(metrics
), 0, "Number of metrics returned")
131 def test_collect_empty_monitoring_param(self
):
132 del self
.vnfd
["vdu"][0]["monitoring-parameter"]
133 self
.mock_db
.return_value
.get_vnfd
.return_value
= self
.vnfd
134 with requests_mock
.Mocker() as mock_requests
:
138 url_pattern
="/suite-api/api/auth/token/acquire",
139 response_file
="vrops_token.json",
143 url_pattern
="/suite-api/api/resources\\?resourceKind=VirtualMachine",
144 response_file
="vrops_resources.json",
148 url_pattern
="/suite-api/api/resources/stats.*",
149 response_file
="vrops_multi.json",
151 metrics
= self
.collector
.collect(self
.vnfr
)
152 self
.assertEqual(len(metrics
), 0, "Number of metrics returned")
154 def test_collect_no_name(self
):
155 del self
.vnfr
["vdur"][0]["name"]
156 del self
.vnfr
["vdur"][1]["name"]
157 self
.mock_db
.return_value
.get_vnfd
.return_value
= self
.vnfd
158 with requests_mock
.Mocker() as mock_requests
:
162 url_pattern
="/suite-api/api/auth/token/acquire",
163 response_file
="vrops_token.json",
167 url_pattern
="/suite-api/api/resources\\?resourceKind=VirtualMachine",
168 response_file
="vrops_resources.json",
172 url_pattern
="/suite-api/api/resources/stats.*",
173 response_file
="vrops_multi.json",
175 metrics
= self
.collector
.collect(self
.vnfr
)
176 self
.assertEqual(len(metrics
), 0, "Number of metrics returned")