| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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. |
| */ |
| |
| var Ember = require('ember'); |
| var App = require('app'); |
| |
| require('utils/helper'); |
| require('mappers/server_data_mapper'); |
| require('mappers/service_metrics_mapper'); |
| |
| describe('App.serviceMetricsMapper', function () { |
| |
| describe('#hbaseMapper', function() { |
| |
| it ('Round Average Load', function() { |
| var tests = [ |
| { |
| components: [ |
| { |
| ServiceComponentInfo: { |
| component_name: "HBASE_MASTER", |
| RegionsInTransition : [ ] |
| }, |
| host_components: [ |
| { |
| metrics:{ |
| hbase: { |
| master: { |
| IsActiveMaster: 'true', |
| AverageLoad: 1.23456789 |
| } |
| }, |
| master: { |
| AssignmentManger: { |
| ritCount: 0 |
| } |
| } |
| }, |
| HostRoles: { |
| host_name: 'host1' |
| } |
| } |
| ] |
| } |
| ], |
| e: '1.23' |
| }, |
| { |
| components: [ |
| { |
| ServiceComponentInfo: { |
| component_name: "HBASE_MASTER", |
| RegionsInTransition : [ ] |
| }, |
| host_components: [ |
| { |
| metrics:{ |
| hbase: { |
| master: { |
| IsActiveMaster: 'true', |
| AverageLoad: 1.00 |
| } |
| }, |
| master: { |
| AssignmentManger: { |
| ritCount: 0 |
| } |
| } |
| }, |
| HostRoles: { |
| host_name: 'host1' |
| } |
| } |
| ] |
| } |
| ], |
| e: '1.00' |
| }, |
| { |
| components: [ |
| { |
| ServiceComponentInfo: { |
| component_name: "HBASE_MASTER", |
| RegionsInTransition : [ ] |
| }, |
| host_components: [ |
| { |
| metrics:{ |
| hbase: { |
| master: { |
| IsActiveMaster: 'true', |
| AverageLoad: 1 |
| } |
| }, |
| master: { |
| AssignmentManger: { |
| ritCount: 0 |
| } |
| } |
| }, |
| HostRoles: { |
| host_name: 'host1' |
| } |
| } |
| ] |
| } |
| ], |
| e: '1.00' |
| }, |
| { |
| components: [ |
| { |
| ServiceComponentInfo: { |
| component_name: "HBASE_MASTER", |
| RegionsInTransition : [ ] |
| }, |
| host_components: [ |
| { |
| metrics:{ |
| hbase: { |
| master: { |
| IsActiveMaster: 'true', |
| AverageLoad: 1.2 |
| } |
| }, |
| master: { |
| AssignmentManger: { |
| ritCount: 0 |
| } |
| } |
| }, |
| HostRoles: { |
| host_name: 'host1' |
| } |
| } |
| ] |
| } |
| ], |
| e: '1.20' |
| } |
| ]; |
| tests.forEach(function(test) { |
| var result = App.serviceMetricsMapper.hbaseMapper(test); |
| expect(result.average_load).to.equal(test.e); |
| }); |
| }); |
| }); |
| |
| describe('#stormMapper', function() { |
| var tests = [ |
| { |
| stackVersionNumber: '2.2', |
| message: 'Storm mapper, stack version 2.2', |
| expectedValues: { |
| total_executors: 28, |
| nimbus_uptime: "15m 1s", |
| free_slots: 0, |
| used_slots: 2, |
| total_slots: 2, |
| total_tasks: 28, |
| topologies: 1 |
| }, |
| components: [ |
| { |
| "ServiceComponentInfo" : { |
| "component_name" : "STORM_UI_SERVER", |
| "service_name" : "STORM" |
| }, |
| "metrics" : { |
| "api" : { |
| "v1": { |
| "cluster": { |
| "summary": { |
| "executorsTotal": 28.0, |
| "nimbusUptime": "15m 1s", |
| "slotsFree": 0.0, |
| "slotsTotal": 2.0, |
| "slotsUsed": 2.0, |
| "supervisors": 1.0, |
| "tasksTotal": 28.0 |
| } |
| }, |
| "topology": { |
| "summary": [ |
| { |
| "executorsTotal": 21.0, |
| "uptime": "5m 59s", |
| "schedulerInfo": null, |
| "name": "WordCountida8c06640_date2901141", |
| "workersTotal": 2.0, |
| "status": "ACTIVE", |
| "owner": "", |
| "tasksTotal": 21.0, |
| "id": "WordCountida8c06640_date2901141-2-1412195707" |
| } |
| ] |
| } |
| } |
| } |
| } |
| } |
| ] |
| }, |
| { |
| stackVersionNumber: '2.1', |
| message: 'Storm mapper, stack version 2.1', |
| expectedValues: { |
| total_executors: 2, |
| nimbus_uptime: "3.96 hours", |
| free_slots: 2, |
| used_slots: 0, |
| total_slots: 2, |
| total_tasks: 21, |
| topologies: 0 |
| }, |
| components: [ |
| { |
| "ServiceComponentInfo" : { |
| "component_name" : "STORM_REST_API", |
| "service_name" : "STORM" |
| }, |
| "metrics" : { |
| "api" : { |
| "cluster" : { |
| "summary" : { |
| "executors.total" : 2.0, |
| "nimbus.uptime" : 14250.0, |
| "slots.free" : 2.0, |
| "slots.total" : 2.0, |
| "slots.used" : 0.0, |
| "supervisors" : 1.0, |
| "tasks.total" : 21.0, |
| "topologies" : 0.0 |
| } |
| } |
| } |
| } |
| } |
| ] |
| } |
| ]; |
| |
| tests.forEach(function(test) { |
| it(test.message, function() { |
| sinon.stub(App, 'get', function(key) { |
| if (key == 'currentStackVersionNumber') { |
| return test.stackVersionNumber; |
| } |
| }); |
| var result = App.serviceMetricsMapper.stormMapper(test); |
| expect(result).to.include(test.expectedValues); |
| App.get.restore(); |
| }); |
| }); |
| |
| }); |
| }); |