blob: 80f41b6bbb74851f38bd9d61e8135e815340bb9f [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.
*/
import { moduleFor, test } from 'ember-qunit';
moduleFor('serializer:dag', 'Unit | Serializer | dag', {
// Specify the other units that are required for this test.
// needs: ['serializer:dag']
});
test('Basic creation test', function(assert) {
let serializer = this.subject();
assert.ok(serializer);
assert.ok(serializer.normalizeResourceHash);
assert.ok(serializer.maps.atsStatus);
assert.ok(serializer.maps.startTime);
assert.ok(serializer.maps.endTime);
assert.ok(serializer.maps.containerLogs);
assert.ok(serializer.maps.vertexIdNameMap);
assert.equal(Object.keys(serializer.get("maps")).length, 13 + 7); //13 own & 9 inherited (2 overwritten)
});
test('atsStatus test', function(assert) {
let serializer = this.subject(),
mapper = serializer.maps.atsStatus;
assert.equal(mapper({
events: [{eventtype: "SOME_EVENT"}]
}), undefined);
assert.equal(mapper({
events: [{eventtype: "DAG_STARTED"}]
}), "RUNNING");
assert.equal(mapper({
otherinfo: {status: "STATUS1"},
primaryfilters: {status: ["STATUS2"]},
events: [{eventtype: "DAG_STARTED"}]
}), "STATUS1");
assert.equal(mapper({
primaryfilters: {status: ["STATUS2"]},
events: [{eventtype: "DAG_STARTED"}]
}), "STATUS2");
});
test('startTime test', function(assert) {
let serializer = this.subject(),
mapper = serializer.maps.startTime,
testTimestamp = Date.now();
assert.equal(mapper({
events: [{eventtype: "SOME_EVENT"}]
}), undefined);
assert.equal(mapper({
events: [{eventtype: "DAG_STARTED", timestamp: testTimestamp}]
}), testTimestamp);
assert.equal(mapper({
otherinfo: {startTime: testTimestamp},
events: [{eventtype: "DAG_STARTED"}]
}), testTimestamp);
});
test('endTime test', function(assert) {
let serializer = this.subject(),
mapper = serializer.maps.endTime,
testTimestamp = Date.now();
assert.equal(mapper({
events: [{eventtype: "SOME_EVENT"}]
}), undefined);
assert.equal(mapper({
events: [{eventtype: "DAG_FINISHED", timestamp: testTimestamp}]
}), testTimestamp);
assert.equal(mapper({
otherinfo: {endTime: testTimestamp},
events: [{eventtype: "DAG_FINISHED"}]
}), testTimestamp);
});
test('containerLogs test', function(assert) {
let serializer = this.subject(),
mapper = serializer.maps.containerLogs;
assert.deepEqual(mapper({
otherinfo: {},
}), [], "No logs");
assert.deepEqual(mapper({
otherinfo: {inProgressLogsURL_1: "http://foo", inProgressLogsURL_2: "https://bar"},
}), [{text: "1", href: "http://foo"}, {text: "2", href: "https://bar"}], "2 logs");
});
test('vertexIdNameMap test', function(assert) {
let serializer = this.subject(),
mapper = serializer.maps.vertexIdNameMap;
let nameIdMap = {
otherinfo: {
vertexNameIdMapping: {
name1: "ID1",
name2: "ID2",
name3: "ID3",
}
}
};
assert.deepEqual(mapper(nameIdMap), {
ID1: "name1",
ID2: "name2",
ID3: "name3",
});
});
test('normalizeResourceHash test', function(assert) {
let serializer = this.subject(),
callerInfo = {
callerId: "id_1",
callerType: "HIVE_QUERY_ID",
context: "Hive",
description: "hive query"
},
data;
// dagContext test
data = serializer.normalizeResourceHash({
data: {
otherinfo: {
dagPlan: {
dagContext: callerInfo
}
}
}
}).data;
assert.equal(data.callerData.callerContext, callerInfo.context);
assert.equal(data.callerData.callerDescription, callerInfo.description);
assert.equal(data.callerData.callerType, callerInfo.callerType);
// dagInfo test
data = serializer.normalizeResourceHash({
data: {
otherinfo: {
dagPlan: {
dagInfo: `{"context": "${callerInfo.context}", "description": "${callerInfo.description}"}`
}
}
}
}).data;
assert.equal(data.callerData.callerContext, callerInfo.context);
assert.equal(data.callerData.callerDescription, callerInfo.description);
assert.notOk(data.callerData.callerType);
// dagInfo.blob test
data = serializer.normalizeResourceHash({
data: {
otherinfo: {
dagPlan: {
dagInfo: {
context: callerInfo.context,
blob: callerInfo.description
}
}
}
}
}).data;
assert.equal(data.callerData.callerContext, callerInfo.context);
assert.equal(data.callerData.callerDescription, callerInfo.description);
assert.notOk(data.callerData.callerType);
// dagContext have presidence over dagInfo
data = serializer.normalizeResourceHash({
data: {
otherinfo: {
dagPlan: {
dagContext: callerInfo,
dagInfo: `{"context": "RandomContext", "description": "RandomDesc"}`
}
}
}
}).data;
assert.equal(data.callerData.callerContext, callerInfo.context);
assert.equal(data.callerData.callerDescription, callerInfo.description);
assert.equal(data.callerData.callerType, callerInfo.callerType);
});