blob: 88b4b43ab90b50388ecbf1cbd9912f5b53afaeda [file] [log] [blame]
/**
* 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.
*/
/*eslint-disable */
var App = require('app');
require('mappers/stack_service_mapper');
describe('App.stackServiceMapper', function () {
describe('#map', function () {
var data = {
"items": [
{
"StackServices" : {
"comments" : "A high-throughput distributed messaging system",
"custom_commands" : [ ],
"display_name" : "Kafka",
"required_services" : [
"ZOOKEEPER"
],
"service_check_supported" : true,
"support_delete_via_ui" : false,
"service_name" : "KAFKA",
"service_version" : "0.8.1.2.2",
"stack_name" : "HDP",
"stack_version" : "2.2",
"config_types" : {
"kafka-broker" : {
"supports" : {
"adding_forbidden" : "false",
"do_not_extend" : "false",
"final" : "false"
}
},
"kafka-env" : {
"supports" : {
"adding_forbidden" : "false",
"do_not_extend" : "false",
"final" : "false"
}
},
"kafka-log4j" : {
"supports" : {
"adding_forbidden" : "false",
"do_not_extend" : "false",
"final" : "false"
}
}
}
},
"components" : [
{
"StackServiceComponents" : {
"cardinality" : "1+",
"component_category" : "MASTER",
"component_name" : "KAFKA_BROKER",
"custom_commands" : [ ],
"display_name" : "Kafka Broker",
"is_client" : false,
"is_master" : true,
"service_name" : "KAFKA",
"stack_name" : "HDP",
"stack_version" : "2.2"
},
"dependencies" : [
{
"Dependencies" : {
"component_name" : "ZOOKEEPER_SERVER",
"dependent_component_name" : "KAFKA_BROKER",
"dependent_service_name" : "KAFKA",
"scope" : "cluster",
"stack_name" : "HDP",
"stack_version" : "2.2"
}
}
]
}
],
"artifacts" : [
{
"Artifacts" : {
"artifact_name": "widget_descriptor"
}
}
]
},
{
"StackServices" : {
"service_name" : "ZOOKEEPER",
"support_delete_via_ui" : true
},
"components" : [ ],
"artifacts" : [ ]
},
{
"StackServices" : {
"service_name" : "KERBEROS"
},
"components" : [ ],
"artifacts" : [ ]
},
{
"StackServices" : {
"service_name" : "HDFS"
},
"components" : [
{
"StackServiceComponents" : {
"cardinality" : "1+",
"component_category" : "SLAVE",
"component_name" : "DATANODE",
"custom_commands" : [ ],
"decommission_allowed" : true,
"bulk_commands_display_name" : "DataNodes",
"bulk_commands_master_component_name" : "NAMENODE",
"has_bulk_commands_definition" : true,
"reassign_allowed" : true,
"display_name" : "DataNode",
"is_client" : false,
"is_master" : true,
"service_name" : "HDFS",
"stack_name" : "HDP"
},
"dependencies" : []
}
],
"artifacts" : [ ]
},
{
"StackServices" : {
"service_name" : "ACCUMULO"
},
"components" : [ ],
"artifacts" : [ ]
},
{
"StackServices" : {
"service_name" : "HIVE"
},
"components" : [
{
"StackServiceComponents" : {
"component_name" : "MYSQL_SERVER",
"custom_commands" : [
"CLEAN"
]
},
"dependencies" : [ ]
}
],
"artifacts" : [ ]
}
]
},
sortedServiceNames = ["HDFS", "HIVE", "ZOOKEEPER", "ACCUMULO", "KAFKA", "KERBEROS"],
serviceResult = {
id: "KAFKA",
serviceName: "KAFKA",
displayName: "Kafka",
configTypes: {
"kafka-broker" : {
"supports" : {
"adding_forbidden" : "false",
"do_not_extend" : "false",
"final" : "false"
}
},
"kafka-env" : {
"supports" : {
"adding_forbidden" : "false",
"do_not_extend" : "false",
"final" : "false"
}
},
"kafka-log4j" : {
"supports" : {
"adding_forbidden" : "false",
"do_not_extend" : "false",
"final" : "false"
}
}
},
comments: "A high-throughput distributed messaging system",
serviceVersion: "0.8.1.2.2",
stackName: "HDP",
isInstalled: false,
isInstallable: true,
isServiceWithWidgets: false,
serviceCheckSupported: true,
supportDeleteViaUi : false,
requiredServices: ["ZOOKEEPER"]
},
componentResult = {
id: "KAFKA_BROKER",
componentName: "KAFKA_BROKER",
displayName: "Kafka Broker",
cardinality: "1+",
customCommands: [],
serviceName: "KAFKA",
componentCategory: "MASTER",
isMaster: true,
isClient: false,
stackName: "HDP",
stackVersion: "2.2",
dependencies: [
{
componentName: "ZOOKEEPER_SERVER",
scope : "cluster"
}
]
};
beforeEach(function () {
App.stackServiceMapper.clearStackModels();
});
it('should sort and map data about services with their components', function () {
App.stackServiceMapper.map(data);
var services = App.StackService.find(),
components = App.StackServiceComponent.find(),
kafkaService = services.findProperty('serviceName', 'KAFKA');
expect(services.mapProperty('serviceName')).to.eql(sortedServiceNames);
expect(kafkaService.get('serviceComponents.length')).to.equal(1);
Em.keys(serviceResult).forEach(function (key) {
expect(kafkaService.get(key)).to.eql(serviceResult[key]);
});
Em.keys(componentResult).forEach(function (key) {
expect(kafkaService.get('serviceComponents').toArray()[0].get(key)).to.eql(componentResult[key]);
});
Em.keys(componentResult).forEach(function (key) {
expect(components.findProperty('componentName', 'KAFKA_BROKER').get(key)).to.eql(componentResult[key]);
});
expect(services.findProperty('serviceName', 'KERBEROS').get('isInstallable')).to.be.false;
expect(services.findProperty('serviceName', 'KERBEROS').get('isSelected')).to.be.false;
expect(components.findProperty('componentName', 'MYSQL_SERVER').get('customCommands')).to.be.empty;
expect(components.findProperty('componentName', 'DATANODE').get('hasBulkCommandsDefinition')).to.be.true;
expect(components.findProperty('componentName', 'DATANODE').get('bulkCommandsDisplayName')).to.eql("DataNodes");
expect(components.findProperty('componentName', 'DATANODE').get('bulkCommandsMasterComponentName')).to.eql("NAMENODE");
expect(components.findProperty('componentName', 'DATANODE').get('decommissionAllowed')).to.be.true;
expect(components.findProperty('componentName', 'DATANODE').get('reassignAllowed')).to.be.true;
expect(services.findProperty('serviceName', 'ZOOKEEPER').get('supportDeleteViaUi')).to.be.true;
});
});
});