function repeatAsyncTest(iCount, fnTest) {
		return new Promise(function (fnResolve) {
			var i = 0,
				oResult = {};

			function step(oStepResult) {
				var sKey;
				if (i > 0) { // step 0 is warm-up
					for (sKey in oStepResult) {
						oResult[sKey] = (oResult[sKey] || 0) + oStepResult[sKey];
					}
				}
				i += 1;
				if (i <= iCount) {
					return fnTest().then(step);
				}
				for (sKey in oResult) {
					oResult[sKey] = oResult[sKey] / iCount;
				}
				fnResolve(oResult);
			}

			fnTest().then(step);
		});
	}
******************************************************************************************
	QUnit.module("sap/ui/model/odata/v4/lib/_MetadataConverter: Performance");

	/**
Repeats an asynchronous test <code>iCount</code> times.

@param {int} iCount the number of repetitions
@param {function} fnTest the test function which has to return a Promise with an object of
   test results.
@returns {Promise}
   a Promise which is resolved with the test results (each value is an average over the
   tests)