summaryrefslogtreecommitdiff
path: root/qpid/java/perftests/src/main/java/test-utils.js
blob: 7bfe23326698a117fe5717776e8e186a031d2bb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
var QPID;
if (!QPID) {
    QPID = {};
}
(function () {
    'use strict';

    if (typeof QPID.times !== 'function') {
        QPID.times = function (multiplicity, template, timeIndexName)
        {
            var retVal = new Array();
            for (var i = 0; i < multiplicity; i++)
            {
                var templateName = template._name;
                var teamplateAsString = JSON.stringify(template);
                if (timeIndexName)
                {
                    teamplateAsString = teamplateAsString.replace(new RegExp(timeIndexName, "g"), i);
                }
                var expandedObject = JSON.parse(teamplateAsString);
                if (!(timeIndexName))
                {
                  expandedObject._name = templateName + "_" + i;
                }
                retVal[i] = expandedObject;
            }
            return retVal;
        }
    }

    if (typeof QPID.iterations !== 'function') {
        QPID.iterations = function (values, template)
        {
            var retVal = new Array()

            var iterationNumber = 0;

            for (variableName in values)
            {
                var variableValues = values[variableName]
                for (i in variableValues)
                {
                    var variableValue = variableValues[i]
                    var templateTestString = JSON.stringify(template)
                    var actualString = templateTestString.replace(new RegExp(variableName, "g"), variableValue)
                    var iteration = JSON.parse(actualString)
                    iteration._iterationNumber = iterationNumber
                    retVal[iterationNumber] = iteration
                    iterationNumber++
                }
            }

            return retVal
        }
    }

    if (typeof QPID.transform !== 'function') {

        /**
        * Function to transform JSON using specified transformation function.
        * Any number of transformation function could be passed after the template argument.
        * Each function should return a transformed JSON object.
        * Example
        * var json = transform({"name": "Test1"}, function(json){json.name="Test"; return json;});
        */
        QPID.transform = function (template)
        {
            var json = template;
            for (var i=1, len=arguments.length; i<len; i++)
            {
                json = arguments[i](json);
            }
            return json;
        }
    }

    if (typeof QPID.cloneJSON !== 'function') {
        QPID.cloneJSON = function (json)
        {
            return JSON.parse( JSON.stringify( json ));
        }
    }

}());