aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services
diff options
context:
space:
mode:
Diffstat (limited to 'sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services')
-rw-r--r--sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/cluster/cluster.js47
-rw-r--r--sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/cluster/clusterSpec.js65
-rw-r--r--sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/clusterState/clusterState.js73
-rw-r--r--sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/clusterState/clusterStateSpec.js64
-rw-r--r--sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/preferences/preferenceSpec.js23
-rw-r--r--sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/preferences/preferences.js35
6 files changed, 307 insertions, 0 deletions
diff --git a/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/cluster/cluster.js b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/cluster/cluster.js
new file mode 100644
index 000000000..c4ddf6552
--- /dev/null
+++ b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/cluster/cluster.js
@@ -0,0 +1,47 @@
+(function( $, app ) {
+
+ var services = app.ns("services");
+ var ux = app.ns("ux");
+
+ function parse_version( v ) {
+ return v.match(/^(\d+)\.(\d+)\.(\d+)/).slice(1,4).map( function(d) { return parseInt(d || 0, 10); } );
+ }
+
+ services.Cluster = ux.Class.extend({
+ defaults: {
+ base_uri: null
+ },
+ init: function() {
+ this.base_uri = this.config.base_uri;
+ },
+ setVersion: function( v ) {
+ this.version = v;
+ this._version_parts = parse_version( v );
+ },
+ versionAtLeast: function( v ) {
+ var testVersion = parse_version( v );
+ for( var i = 0; i < 3; i++ ) {
+ if( testVersion[i] !== this._version_parts[i] ) {
+ return testVersion[i] < this._version_parts[i];
+ }
+ }
+ return true;
+ },
+ request: function( params ) {
+ return $.ajax( $.extend({
+ url: this.base_uri + params.path,
+ dataType: "json",
+ error: function(xhr, type, message) {
+ if("console" in window) {
+ console.log({ "XHR Error": type, "message": message });
+ }
+ }
+ }, params) );
+ },
+ "get": function(path, success) { return this.request( { type: "GET", path: path, success: success } ); },
+ "post": function(path, data, success) { return this.request( { type: "POST", path: path, data: data, success: success } ); },
+ "put": function(path, data, success) { return this.request( { type: "PUT", path: path, data: data, success: success } ); },
+ "delete": function(path, data, success) { return this.request( { type: "DELETE", path: path, data: data, success: success } ); }
+ });
+
+})( this.jQuery, this.app );
diff --git a/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/cluster/clusterSpec.js b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/cluster/clusterSpec.js
new file mode 100644
index 000000000..ff4e8a967
--- /dev/null
+++ b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/cluster/clusterSpec.js
@@ -0,0 +1,65 @@
+describe("app.services.Cluster", function() {
+
+ var Cluster = window.app.services.Cluster;
+ var test = window.test;
+
+ var cluster;
+
+ beforeEach( function() {
+ cluster = new Cluster({ base_uri: "http://localhost:9200/" });
+ });
+
+ describe( "when it is initialised", function() {
+
+ it("should have a localhost base_uri", function() {
+ expect( cluster.base_uri ).toBe( "http://localhost:9200/" );
+ });
+
+ it("should have no version", function() {
+ expect( cluster.version ).toBe( undefined );
+ });
+
+ });
+
+ describe( "setVersion()", function() {
+
+ it("have a version", function() {
+ cluster.setVersion( "1.12.3-5" );
+ expect( cluster.version ).toBe( "1.12.3-5" );
+ });
+
+ });
+
+ describe("versionAtLeast()", function() {
+ var vs = [ "0.0.3", "0.13.5", "0.90.3", "1.0.0", "1.1.0", "1.2.3", "1.12.4.rc2", "13.0.0" ];
+
+ it("should return true for versions that are less than or equal to the current version", function() {
+ cluster.setVersion("1.12.5");
+ expect( cluster.versionAtLeast("1.12.5" ) ).toBe( true );
+ expect( cluster.versionAtLeast("1.12.5rc2" ) ).toBe( true );
+ expect( cluster.versionAtLeast("1.12.5-6" ) ).toBe( true );
+ expect( cluster.versionAtLeast("1.12.5-6.beta7" ) ).toBe( true );
+ expect( cluster.versionAtLeast("1.12.4" ) ).toBe( true );
+ expect( cluster.versionAtLeast("0.12.4" ) ).toBe( true );
+ expect( cluster.versionAtLeast("1.1.8" ) ).toBe( true );
+
+ for( var i = 0; i < vs.length - 1; i++ ) {
+ cluster.setVersion( vs[i+1] );
+ expect( cluster.versionAtLeast( vs[i] ) ).toBe( true );
+ }
+ });
+
+ it("should return false for versions that are greater than the current version", function() {
+ cluster.setVersion("1.12.5");
+ expect( cluster.versionAtLeast("1.12.6" ) ).toBe( false );
+ expect( cluster.versionAtLeast("1.13.4" ) ).toBe( false );
+ expect( cluster.versionAtLeast("2.0.0" ) ).toBe( false );
+
+ for( var i = 0; i < vs.length - 1; i++ ) {
+ cluster.setVersion( vs[i] );
+ expect( cluster.versionAtLeast( vs[i+1] ) ).toBe( false );
+ }
+ });
+ });
+
+});
diff --git a/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/clusterState/clusterState.js b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/clusterState/clusterState.js
new file mode 100644
index 000000000..1d7334e0f
--- /dev/null
+++ b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/clusterState/clusterState.js
@@ -0,0 +1,73 @@
+ (function( app ) {
+
+ var services = app.ns("services");
+ var ux = app.ns("ux");
+
+ services.ClusterState = ux.Observable.extend({
+ defaults: {
+ cluster: null
+ },
+ init: function() {
+ this._super();
+ this.cluster = this.config.cluster;
+ this.clusterState = null;
+ this.status = null;
+ this.nodeStats = null;
+ this.clusterNodes = null;
+ },
+ refresh: function() {
+ var self = this, clusterState, status, nodeStats, clusterNodes, clusterHealth;
+ function updateModel() {
+ if( clusterState && status && nodeStats && clusterNodes && clusterHealth ) {
+ this.clusterState = clusterState;
+ this.status = status;
+ this.nodeStats = nodeStats;
+ this.clusterNodes = clusterNodes;
+ this.clusterHealth = clusterHealth;
+ this.fire( "data", this );
+ }
+ }
+ this.cluster.get("_cluster/state", function( data ) {
+ clusterState = data;
+ updateModel.call( self );
+ });
+ this.cluster.get("_stats", function( data ) {
+ status = data;
+ updateModel.call( self );
+ });
+ this.cluster.get("_nodes/stats", function( data ) {
+ nodeStats = data;
+ updateModel.call( self );
+ });
+ this.cluster.get("_nodes", function( data ) {
+ clusterNodes = data;
+ updateModel.call( self );
+ });
+ this.cluster.get("_cluster/health", function( data ) {
+ clusterHealth = data;
+ updateModel.call( self );
+ });
+ },
+ _clusterState_handler: function(state) {
+ this.clusterState = state;
+ this.redraw("clusterState");
+ },
+ _status_handler: function(status) {
+ this.status = status;
+ this.redraw("status");
+ },
+ _clusterNodeStats_handler: function(stats) {
+ this.nodeStats = stats;
+ this.redraw("nodeStats");
+ },
+ _clusterNodes_handler: function(nodes) {
+ this.clusterNodes = nodes;
+ this.redraw("clusterNodes");
+ },
+ _clusterHealth_handler: function(health) {
+ this.clusterHealth = health;
+ this.redraw("status");
+ }
+ });
+
+})( this.app );
diff --git a/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/clusterState/clusterStateSpec.js b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/clusterState/clusterStateSpec.js
new file mode 100644
index 000000000..b91237c6e
--- /dev/null
+++ b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/clusterState/clusterStateSpec.js
@@ -0,0 +1,64 @@
+describe("app.services.ClusterState", function() {
+
+ var ClusterState = window.app.services.ClusterState;
+ var test = window.test;
+
+ var c;
+ var dummyData = {};
+ var dataEventCallback;
+
+ function expectAllDataToBeNull() {
+ expect( c.clusterState ).toBe( null );
+ expect( c.status ).toBe( null );
+ expect( c.nodeStats ).toBe( null );
+ expect( c.clusterNodes ).toBe( null );
+ }
+
+ beforeEach( function() {
+ test.cb.use();
+ dataEventCallback = jasmine.createSpy("onData");
+ c = new ClusterState({
+ cluster: {
+ get: test.cb.createSpy("get", 1, [ dummyData ] )
+ },
+ onData: dataEventCallback
+ });
+ });
+
+ describe( "when it is initialised", function() {
+
+ it("should have null data", function() {
+ expectAllDataToBeNull();
+ });
+
+ });
+
+ describe( "when refresh is called", function() {
+
+ beforeEach( function() {
+ c.refresh();
+ });
+
+ it("should not not update models until all network requests have completed", function() {
+ test.cb.execOne();
+ expectAllDataToBeNull();
+ test.cb.execOne();
+ expectAllDataToBeNull();
+ test.cb.execOne();
+ expectAllDataToBeNull();
+ test.cb.execOne();
+ expectAllDataToBeNull();
+ test.cb.execOne();
+ expect( c.clusterState ).toBe( dummyData );
+ expect( c.status ).toBe( dummyData );
+ expect( c.nodeStats ).toBe( dummyData );
+ expect( c.clusterNodes ).toBe( dummyData );
+ });
+
+ it("should fire a 'data' event when all data is ready", function() {
+ test.cb.execAll();
+ expect( dataEventCallback ).toHaveBeenCalledWith( c );
+ });
+ });
+
+});
diff --git a/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/preferences/preferenceSpec.js b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/preferences/preferenceSpec.js
new file mode 100644
index 000000000..968815d4c
--- /dev/null
+++ b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/preferences/preferenceSpec.js
@@ -0,0 +1,23 @@
+describe("app.services.Preferences", function(){
+
+var Preferences = window.app.services.Preferences;
+
+ var prefs;
+
+ beforeEach( function() {
+ spyOn(window.localStorage, "getItem").and.returnValue( '{"foo":true}' );
+ spyOn(window.localStorage, "setItem");
+ prefs = Preferences.instance();
+ });
+
+ it("should return a preference from localStorage", function() {
+ expect( prefs.get("foo") ).toEqual( {foo:true} );
+ });
+
+ it("should set a preference in localStorage", function() {
+ prefs.set("foo", { foo: false } );
+ expect( window.localStorage.setItem ).toHaveBeenCalledWith('foo', '{"foo":false}');
+ });
+
+
+});
diff --git a/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/preferences/preferences.js b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/preferences/preferences.js
new file mode 100644
index 000000000..a45eb966d
--- /dev/null
+++ b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/preferences/preferences.js
@@ -0,0 +1,35 @@
+(function( app ) {
+
+ var ux = app.ns("ux");
+ var services = app.ns("services");
+
+ services.Preferences = ux.Singleton.extend({
+ init: function() {
+ this._storage = window.localStorage;
+ this._setItem("__version", 1 );
+ },
+ get: function( key ) {
+ return this._getItem( key );
+ },
+ set: function( key, val ) {
+ return this._setItem( key, val );
+ },
+ _getItem: function( key ) {
+ try {
+ return JSON.parse( this._storage.getItem( key ) );
+ } catch(e) {
+ console.warn( e );
+ return undefined;
+ }
+ },
+ _setItem: function( key, val ) {
+ try {
+ return this._storage.setItem( key, JSON.stringify( val ) );
+ } catch(e) {
+ console.warn( e );
+ return undefined;
+ }
+ }
+ });
+
+})( this.app );