Commit 2f914bc0 authored by Tristan Cavelier's avatar Tristan Cavelier

dummystorages updated

parent dec4d34f
// Adds 3 dummy storages to JIO // Adds 5 dummy storages to JIO
// type: // type:
// - dummyallok // - dummyallok
// - dummyallfail // - dummyallfail
// - dummyallnotfound // - dummyallnotfound
// - dummyall3tries // - dummyall3tries
// - dummyalldocs
(function () { var jioDummyStorageLoader = function ( jIO ) { (function () { var jioDummyStorageLoader = function ( jIO ) {
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
...@@ -11,64 +12,24 @@ ...@@ -11,64 +12,24 @@
var newDummyStorageAllOk = function ( spec, my ) { var newDummyStorageAllOk = function ( spec, my ) {
var that = my.basicStorage( spec, my ); var that = my.basicStorage( spec, my );
var super_serialized = that.serialized; that.specToStore = function () {
that.serialized = function () { return {"username":spec.username};
var o = super_serialized();
o.username = spec.username;
return o;
}; };
// Fake revisions
var fakeCount = 0;
var generateRevision = function(command, action, reset){
var that = {},
priv = {},
fakeRevision = "",
fakeCount = reset === true ? 0 : fakeCount,
now = Date.now();
that.makeHash = function(){
return that.hashCode('' + command.getDocId() + ' ' + now + '');
};
that.hashCode = function (string) {
return hex_sha256(string);
};
that.generateNextRev = function (previous_revision, string) {
return (parseInt(previous_revision.split('-')[0],10)+1) + '-' +
priv.hashCode(previous_revision + string);
};
if ( fakeRevision === "" && fakeCount === 0 ){
fakeRevision = '1-'+that.makeHash();
} else {
if( action !== "post"){
fakeRevision = that.generateNextRev( fakeRev, that.makeHash );
}
}
return fakeRevision;
};
that.post = function (command) { that.post = function (command) {
setTimeout (function () { setTimeout (function () {
that.success({ that.success({
ok:true, "ok": true,
id:command.getDocId(), "id": command.getDocId()
rev:generateRevision(command, "post", true)
}); });
}, 100); }, 100); // 100 ms, for jiotests simple job waiting
}; // end post }; // end post
that.put = function (command) { that.put = function (command) {
setTimeout (function () { setTimeout (function () {
that.success ({ that.success ({
ok:true, "ok": true,
id:command.getDocId(), "id": command.getDocId()
rev:generateRevision(command, "put", true)
}); });
}, 100); // 100 ms, for jiotests simple job waiting }, 100); // 100 ms, for jiotests simple job waiting
}; // end put }; // end put
...@@ -76,49 +37,50 @@ ...@@ -76,49 +37,50 @@
that.putAttachment = function (command) { that.putAttachment = function (command) {
setTimeout (function () { setTimeout (function () {
that.success ({ that.success ({
ok:true, "ok": true,
id:command.getDocId(), "id": command.getDocId()+"/"+command.getAttachmentId()
rev:generateRevision(command, "putAttachment", true)
}); });
}, 100); // 100 ms, for jiotests simple job waiting }, 100); // 100 ms, for jiotests simple job waiting
}; // end putAttachment }; // end putAttachment
that.get = function (command) { that.get = function (command) {
setTimeout(function () { setTimeout(function () {
if (command.getAttachmentId()) {
return that.success ('0123456789');
}
that.success ({ that.success ({
_id:command.getDocId(), "_id": command.getDocId(),
_rev:generateRevision(command, "get", true), "title":'get_title'
content:'content'
}); });
}, 100); }, 100); // 100 ms, for jiotests simple job waiting
}; // end get // 100 ms, for jiotests simple job waiting }; // end get
that.allDocs = function (command) { that.allDocs = function (command) {
setTimeout(function () { setTimeout(function () {
var o = { that.error({
total_rows: 2, "status": 405,
rows: [{ "statusText": "Method Not Allowed",
id:'file', "error": "method_not_allowed",
key:'file', "message": "Your are not allowed to use this command",
value: {"rev":generateRevision(command, "allDocs", true)} "reason": "LocalStorage forbids AllDocs command executions"
},{ });
id:'memo', });
key:'memo',
value: {"rev":generateRevision(command, "allDocs", true)}
}]
};
that.success(o);
}, 100);
}; // end allDocs }; // end allDocs
that.remove = function (command) { that.remove = function (command) {
setTimeout (function () { setTimeout (function () {
if (command.getAttachmentId()) {
that.success({ that.success({
ok:true, "ok": true,
id:command.getDocId(), "id": command.getDocId()+"/"+command.getAttachmentId()
rev:generateRevision(command, "remove", true)
}); });
}, 100); } else {
that.success({
"ok": true,
"id": command.getDocId()
});
}
}, 100); // 100 ms, for jiotests simple job waiting
}; // end remove }; // end remove
return that; return that;
...@@ -137,7 +99,7 @@ ...@@ -137,7 +99,7 @@
error:'unknown_error', error:'unknown_error',
message:'Execution encountred an error.', message:'Execution encountred an error.',
reason:'Execution encountred an error'}); reason:'Execution encountred an error'});
}); }, 100);
}; };
that.post = function (command) { that.post = function (command) {
...@@ -148,12 +110,24 @@ ...@@ -148,12 +110,24 @@
priv.error(); priv.error();
}; // end put }; // end put
that.putAttachment = function (command) {
priv.error();
}; // end put
that.get = function (command) { that.get = function (command) {
priv.error(); priv.error();
}; // end get }; // end get
that.allDocs = function (command) { that.allDocs = function (command) {
priv.error(); setTimeout(function () {
that.error({
"status": 405,
"statusText": "Method Not Allowed",
"error": "method_not_allowed",
"message": "Your are not allowed to use this command",
"reason": "LocalStorage forbids AllDocs command executions"
});
});
}; // end allDocs }; // end allDocs
that.remove = function (command) { that.remove = function (command) {
...@@ -172,8 +146,8 @@ ...@@ -172,8 +146,8 @@
that.post = function (command) { that.post = function (command) {
setTimeout (function () { setTimeout (function () {
that.success ({ that.success ({
ok:true, "ok": true,
id:command.getDocId() "id": command.getDocId()
}); });
}, 100); }, 100);
}; // end post }; // end post
...@@ -181,37 +155,52 @@ ...@@ -181,37 +155,52 @@
that.put = function (command) { that.put = function (command) {
setTimeout (function () { setTimeout (function () {
that.success ({ that.success ({
ok:true, "ok": true,
id:command.getDocId() "id": command.getDocId()
});
}, 100);
}; // end put
that.putAttachment = function (command) {
setTimeout (function () {
that.success ({
"ok": true,
"id": command.getDocId()+"/"+command.getAttachmentId()
}); });
}, 100); }, 100);
}; // end put }; // end put
that.get = function (command) { that.get = function (command) {
setTimeout(function () { setTimeout(function () {
that.error ({status:404,statusText:'Not Found', that.error ({
error:'not_found', "status": 404,
message:'Document "'+ command.getDocId() + "statusText": "Not Found",
'" not found.', "error": "not_found",
reason:'Document "'+ command.getDocId() + "message": "Document '"+ command.getDocId() +
'" not found'}); "' not found",
"reason": "Document '"+ command.getDocId() +
"' does not exist"
});
}, 100); }, 100);
}; // end get }; // end get
that.allDocs = function (command) { that.allDocs = function (command) {
setTimeout(function () { setTimeout(function () {
that.error ({status:404,statusText:'Not Found', that.error({
error:'not_found', "status": 405,
message:'User list not found.', "statusText": "Method Not Allowed",
reason:'User list not found'}); "error": "method_not_allowed",
}, 100); "message": "Your are not allowed to use this command",
"reason": "LocalStorage forbids AllDocs command executions"
});
});
}; // end allDocs }; // end allDocs
that.remove = function (command) { that.remove = function (command) {
setTimeout (function () { setTimeout (function () {
that.success ({ that.success ({
ok:true, "ok": true,
id:command.getDocId() "id": command.getDocId()
}); });
}, 100); }, 100);
}; // end remove }; // end remove
...@@ -226,15 +215,12 @@ ...@@ -226,15 +215,12 @@
newDummyStorageAll3Tries = function ( spec, my ) { newDummyStorageAll3Tries = function ( spec, my ) {
var that = my.basicStorage( spec, my ), priv = {}; var that = my.basicStorage( spec, my ), priv = {};
// this serialized method is used to make simple difference between // this specToStore method is used to make simple difference between
// two dummyall3tries storages: // two dummyall3tries storages:
// so {type:'dummyall3tries',a:'b'} differs from // so {type:'dummyall3tries',a:'b'} differs from
// {type:'dummyall3tries',c:'d'}. // {type:'dummyall3tries',c:'d'}.
var super_serialized = that.serialized; that.specToStore = function () {
that.serialized = function () { return {"applicationname": spec.applicationname};
var o = super_serialized();
o.applicationname = spec.applicationname;
return o;
}; };
priv.doJob = function (command,if_ok_return) { priv.doJob = function (command,if_ok_return) {
...@@ -243,12 +229,16 @@ ...@@ -243,12 +229,16 @@
priv.Try3OKElseFail (command.getTried(),if_ok_return); priv.Try3OKElseFail (command.getTried(),if_ok_return);
}, 100); }, 100);
}; };
priv.Try3OKElseFail = function (tries,if_ok_return) { priv.Try3OKElseFail = function (tries,if_ok_return) {
if ( typeof tries === 'undefined' ) { if ( typeof tries === 'undefined' ) {
return that.error ({status:0,statusText:'Unknown Error', return that.error ({
error:'unknown_error', "status": 0,
message:'Cannot get tried.', "statusText": "Unknown Error",
reason:'Cannot get tried'}); "error": "unknown_error",
"message": "Cannot get tried",
"reason": "Unknown"
});
} }
if ( tries < 3 ) { if ( tries < 3 ) {
return that.retry ( return that.retry (
...@@ -258,55 +248,171 @@ ...@@ -258,55 +248,171 @@
return that.success (if_ok_return); return that.success (if_ok_return);
} }
if ( tries > 3 ) { if ( tries > 3 ) {
return that.error ({status:1,statusText:'Too Much Tries', return that.error ({
error:'too_much_tries', "status": 1,
message:'Too much tries.', "statusText": "Too Much Tries",
reason:'Too much tries'}); "error": "too_much_tries",
"message": "Too much tries",
"reason": "Too much tries"
});
} }
}; };
that.post = function (command) { that.post = function (command) {
priv.doJob (command,{ok:true,id:command.getDocId()}); priv.doJob (command,{"ok": true,"id": command.getDocId()});
}; // end post }; // end post
that.put = function (command) { that.put = function (command) {
priv.doJob (command,{ok:true,id:command.getDocId()}); priv.doJob (command,{"ok": true,"id": command.getDocId()});
}; // end put
that.putAttachment = function (command) {
priv.doJob (command,{
"ok": true,
"id": command.getDocId()+"/"+command.getAttachmentId()
});
}; // end put }; // end put
that.get = function (command) { that.get = function (command) {
if (command.getAttachmentId()) {
priv.doJob (command,"0123456789");
} else {
priv.doJob (command,{ priv.doJob (command,{
_id: command.getDocId(), "_id": command.getDocId(),
content: 'content '+command.getDocId(), "title": 'Title of '+command.getDocId(),
_creation_date: 11000,
_last_modified: 17000
}); });
}
}; // end get }; // end get
that.allDocs = function (command) { that.allDocs = function (command) {
setTimeout(function () {
that.error({
"status": 405,
"statusText": "Method Not Allowed",
"error": "method_not_allowed",
"message": "Your are not allowed to use this command",
"reason": "LocalStorage forbids AllDocs command executions"
});
});
}; // end allDocs
that.remove = function (command) {
if (command.getAttachmentId()) {
priv.doJob(command,{ priv.doJob(command,{
total_rows:2, "ok": true,
rows:[{ "id": command.getDocId()+"/"+command.getAttachmentId()
id:'file',key:'file', });
value:{ } else {
_creation_date:10000, priv.doJob(command,{"ok": true,"id": command.getDocId()});
_last_modified:15000
} }
},{ }; // end remove
id:'memo',key:'memo',
value:{ return that;
_creation_date:20000, },
_last_modified:25000 // end Dummy Storage All 3 Tries
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
// Dummy Storage 5 : all docs
newDummyStorageAllDocs = function (spec, my) {
var that = my.basicStorage(spec, my);
that.specToStore = function () {
return {"username": spec.username};
};
that.post = function (command) {
setTimeout (function () {
that.success({
"ok": true,
"id": command.getDocId()
});
}, 100); // 100 ms, for jiotests simple job waiting
}; // end post
that.put = function (command) {
setTimeout (function () {
that.success ({
"ok": true,
"id": command.getDocId()
});
}, 100); // 100 ms, for jiotests simple job waiting
}; // end put
that.putAttachment = function (command) {
setTimeout (function () {
that.success ({
"ok": true,
"id": command.getDocId()+"/"+command.getAttachmentId()
});
}, 100); // 100 ms, for jiotests simple job waiting
}; // end putAttachment
that.get = function (command) {
setTimeout(function () {
if (command.getAttachmentId()) {
return that.success ('0123456789');
}
that.success ({
"_id": command.getDocId(),
"title": "get_title"
});
}, 100); // 100 ms, for jiotests simple job waiting
}; // end get
that.allDocs = function (command) {
setTimeout(function () {
var addRow, o = {
"total_rows": 0,
"rows": []
};
addRow = function (id, key, doc) {
var row = {
"id": "file",
"key": "file",
"value": {}
};
if (command.getOption("include_docs")) {
row["doc"] = doc;
}
o.rows.push(row);
o.total_rows += 1;
};
addRow("file", "file", {
"_id": "file",
"Title": "myFile",
});
addRow(
"mylongtitledfilethatidontliketowritebyhandonablackboard",
"mylongti.alias1",
{
"_id": "mylongtitledfilethatidontliketowritebyhandonablackboard",
"Title": "myLongFile",
} }
}]}); );
that.success(o);
});
}; // end allDocs }; // end allDocs
that.remove = function (command) { that.remove = function (command) {
priv.doJob(command,{ok:true,id:command.getDocId()}); setTimeout (function () {
if (command.getAttachmentId()) {
that.success({
"ok": true,
"id": command.getDocId()+"/"+command.getAttachmentId()
});
} else {
that.success({
"ok": true,
"id": command.getDocId()
});
}
}, 100); // 100 ms, for jiotests simple job waiting
}; // end remove }; // end remove
return that; return that;
}; };
// end Dummy Storage All 3 Tries // end Dummy Storage All Docs
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
// add key to storageObjectType of global jio // add key to storageObjectType of global jio
...@@ -314,6 +420,7 @@ ...@@ -314,6 +420,7 @@
jIO.addStorageType('dummyallfail', newDummyStorageAllFail); jIO.addStorageType('dummyallfail', newDummyStorageAllFail);
jIO.addStorageType('dummyallnotfound', newDummyStorageAllNotFound); jIO.addStorageType('dummyallnotfound', newDummyStorageAllNotFound);
jIO.addStorageType('dummyall3tries', newDummyStorageAll3Tries); jIO.addStorageType('dummyall3tries', newDummyStorageAll3Tries);
jIO.addStorageType('dummyalldocs', newDummyStorageAllDocs);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment