dataschema-perf.html revision 83051cc2f61c3e17f61b8f8f409a69c057db0e6b
6e89f0a006cdbb50151504b3107096e365136687Jenny Han Donnelly<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
6e89f0a006cdbb50151504b3107096e365136687Jenny Han Donnelly<script type="text/javascript" src="/build/yui/yui.js"></script>
6e89f0a006cdbb50151504b3107096e365136687Jenny Han Donnelly<p><select id="testSelector"></select> <input type="button" value="Run Test" id="btnRun" disabled=true></p>
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly filter: "debug",
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly logInclude:{"perf":true, "dataschema-json":true, "dataschema-xml":true},
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly useConsole: true
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly}).use("console", "profiler", "dump", "datatype", "dataschema", function(Y) {
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly // Set up the page
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly var btnRun = Y.one("#btnRun"),
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly selectTest = Y.one("#testSelector"),
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly allTests = [],
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly myConsole = new Y.Console().render();
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly btnRun.set("disabled", false);
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly Y.on("click", function(e){
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly function register(testName, testFn) {
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly allTests[index] = testFn;
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly var optionEl = document.createElement("option");
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly function run() {
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly var test = selectTest.get("value");
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly Y.log("Starting " + test, "info", "perf");
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly allTests[selectTest.get("selectedIndex")].apply(this);
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly Y.log(test + " completed", "info", "perf");
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly //Define tests
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly register("Test basic JSON schema parsing", function() {
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly var schema = {
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly resultListLocator:"results",
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly resultFields: [
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly data_out, i=0, startTime, endTime;
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly // Populate data
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly data_in.results[i] = {"id":i, "firstname":"George", "lastname":"Washington"};
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly data_out = Y.DataSchema.JSON.apply(schema, data_in);
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly register("Test JSON schema parsing w/locators", function() {
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly var schema = {
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly resultFields: [
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly {key:"name", locator:"fruit.goodforpie[1].name"},
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly {key:"calories", locator:"fruit.goodforpie[1].calories", parser:"number"},
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly {key:"profile", locator:"fruit.goodforpie[1].profile.taste[0]"}
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly results = [],
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly results[i] = {
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly "goodforpie": [
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly {"name":"apple", "calories":"70"},
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly {"name":"banana", "calories":"70", "profile":{
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly "taste":["sweet"]
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly startTime = new Date();
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly data_out = Y.DataSchema.JSON.apply(schema, data_in);
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly endTime = new Date();
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly Y.log(endTime-startTime);
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly register("Test XML schema parsing", function() {
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly var schema = {
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly resultListLocator: "item",
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly resultFields: [{key:"type", locator:"@type"}, {key:"rank", parser:Y.DataType.Number.parse}, "name", {key:"subnameatt", locator:"subitem/name/@type"}, {key:"age", locator:"subitem/age", parser:"number"}]
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly data_in = "<myroot rootatt='5'><top>topvalue</top><second nested='nestedsecond' /><allitems><livehere>",
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly data_out, i=0, startTime, endTime;
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly //Populate data
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly data_in += "<item type='foo'><name type='nametype0'>Abc</name><rank>"+i+"</rank><subitem><name type='subnametype0'>subABC</name><age>10</age></subitem></item>";
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly data_in += "</livehere></allitems></myroot>";
83051cc2f61c3e17f61b8f8f409a69c057db0e6bJenny Donnelly data_out = Y.DataSchema.XML.apply(schema, data_in);