diff test_ltpda_connection_manager.m @ 0:d5fef23867bb

First workig implementation.
author Daniele Nicolodi <daniele@science.unitn.it>
date Sun, 23 May 2010 10:51:35 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test_ltpda_connection_manager.m	Sun May 23 10:51:35 2010 +0200
@@ -0,0 +1,111 @@
+function test_ltpda_connection_manager()
+
+  % change with valid credentials
+  host   = '127.0.0.1'; % sometimes using localhost causes problems
+  db     = 'one';
+  user   = 'daniele';
+  passwd = 'daniele';
+
+  % hack user properties
+  p = getappdata(0, 'LTPDApreferences');
+  p.cm.credentialsExpiry = 120; % seconds
+  p.cm.cachePassword = 2; % 0=no 1=yes 2=ask
+  p.cm.maxConnectionsNumber = 10;
+  setappdata(0, 'LTPDApreferences', p);
+
+
+  % reset
+  setappdata(0, 'LTPDAConnectionManager', []);
+  % connection manager
+  cm = LTPDAConnectionManager();
+
+
+  % add credentials
+  n = numel(cm.credentials);
+  cm.add(credentials(host, 'db', 'user', 'passwd'));
+  assert(numel(cm.credentials) == n+1);
+
+  % try again
+  cm.add(credentials(host, 'db', 'user', 'passwd'));
+  % just updated previous entry
+  assert(numel(cm.credentials) == n+1);
+
+  % add other credentials
+  cm.add(credentials('host', 'db'));
+  assert(numel(cm.credentials) == n+2);
+
+  % add user
+  cm.add(credentials('host', 'db', 'user'));
+  assert(numel(cm.credentials) == n+2);
+
+  % add  password
+  cm.add(credentials('host', 'db', 'user', 'passwd'));
+  assert(numel(cm.credentials) == n+2);
+
+  % add the oned will be used now on
+  cm.add(credentials(host, db, user, passwd));
+  assert(numel(cm.credentials) == n+3);
+
+
+  % use the credentials cache
+  c = cm.connect(host, db);
+  % one connection in the pool
+  assert(cm.count() == 1);
+  c.close();
+  % still there
+  assert(numel(cm.connections) == 1);
+  n = cm.count();
+  % count has the side effect of removing closed connections from the pool
+  assert(n == 0);
+
+  % open two connections
+  c1 = cm.connect(host, db);
+  c2 = cm.connect(host, db, user);
+  % one connection in the pool
+  assert(numel(cm.connections) == 2);
+  % even when we remove the closed ones
+  assert(cm.count() == 2);
+  % clean up
+  c1.close();
+  c2.close();
+  % no more connections in the pool
+  assert(cm.count() == 0);
+  assert(numel(cm.connections) == 0);
+
+  % plist parameters
+  c = cm.connect(plist('hostname', host, 'database', db));
+  % one more connection in the pool
+  assert(numel(cm.connections) == 1);
+  % clen up
+  c.close();
+
+  % create a connection
+  c1 = cm.connect(host, db);
+  n = cm.count();
+  % specify it as connction parameter
+  c2 = cm.connect(plist('connection', c1));
+  % we should get back the same connection
+  assert(c2 == c1);
+  % it should not have been added to the connection pool
+  assert(numel(cm.connections) == n);
+  % clean up
+  c1.close();
+
+  % no connections in the pool
+  assert(cm.count() == 0);
+  assert(numel(cm.connections) == 0);
+
+  % open a bunch of connections
+  c = cm.connect(host, db);
+  c = cm.connect(host, db);
+  c = cm.connect(host, db);
+  c = cm.connect(host, db);
+  c = cm.connect(host, db);
+  assert(numel(cm.connections) == 5);
+  assert(cm.count() == 5);
+  % close them all
+  cm.close();
+  % check
+  assert(cm.count() == 0);
+
+end