summaryrefslogtreecommitdiff
path: root/src/connectors/JUTests/data/io
diff options
context:
space:
mode:
authorLudovic Pouzenc <ludovic@pouzenc.fr>2014-09-20 09:17:18 +0200
committerLudovic Pouzenc <ludovic@pouzenc.fr>2015-04-14 07:44:29 +0200
commitd6f22a2af48f83d63b5381118d2029797458194e (patch)
treecb6bef9a98335a7af2aee40b0752d14fcee0916e /src/connectors/JUTests/data/io
parent774194091e9bcee08e48fcdf4127f9afd9d6d644 (diff)
downloadsssync-d6f22a2af48f83d63b5381118d2029797458194e.tar.gz
sssync-d6f22a2af48f83d63b5381118d2029797458194e.tar.bz2
sssync-d6f22a2af48f83d63b5381118d2029797458194e.zip
Early development stages (before SCM) : WIP_1
Early development stages (before SCM) : WIP_2 Early development stages (before SCM) : WIP_3 Early development stages (before SCM) : WIP_4 Early development stages (before SCM) : WIP_6 Early development stages (before SCM) : WIP_7 Early development stages (before SCM) : WIP_8 Adds documentation folder as an Eclipse project. Adds README for github. Decent source tree by tuning Eclise project's location One forgetten file while movign everything :) Adding Copyright, licencing (GPL v3), correcting README
Diffstat (limited to 'src/connectors/JUTests/data/io')
-rw-r--r--src/connectors/JUTests/data/io/csv/CSVDataReaderTest.java50
-rw-r--r--src/connectors/JUTests/data/io/ldap/LDAPDataReaderTest.java94
-rw-r--r--src/connectors/JUTests/data/io/ldap/LDAPDataWriterTest.java16
-rw-r--r--src/connectors/JUTests/data/io/sql/SQLRelDataReaderTest.java115
-rw-r--r--src/connectors/JUTests/data/io/sql/req_test.sql5
5 files changed, 280 insertions, 0 deletions
diff --git a/src/connectors/JUTests/data/io/csv/CSVDataReaderTest.java b/src/connectors/JUTests/data/io/csv/CSVDataReaderTest.java
new file mode 100644
index 0000000..6a0e053
--- /dev/null
+++ b/src/connectors/JUTests/data/io/csv/CSVDataReaderTest.java
@@ -0,0 +1,50 @@
+package data.io.csv;
+
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Iterator;
+
+import org.junit.Test;
+
+import data.MVDataEntry;
+
+public class CSVDataReaderTest {
+
+
+ @Test
+ public void testNext() throws IOException {
+ CSVDataReader reader = new CSVDataReader(
+ "testNext",
+ new StringReader(CSVDataReader.CSV_DEMO),
+ false
+ );
+
+ MVDataEntry expected[] = new MVDataEntry[3];
+ expected[0]=new MVDataEntry("line1");
+ expected[0].splitAndPut("from", "csv1;csv1bis", ";");
+ expected[0].splitAndPut("attr2","csv1",";");
+
+ expected[1]=new MVDataEntry("line2");
+ expected[1].splitAndPut("hello", "all;the;world", ";");
+
+ expected[2]=new MVDataEntry("line3");
+ expected[2].splitAndPut("hello", "all;the;others", ";");
+
+ // Test twice to check if asking a new iterator "rewinds" correctly
+ for (int i=0;i<2;i++) {
+ System.out.println("Loop " + (i+1));
+ Iterator<MVDataEntry> readerIt = reader.iterator();
+
+ for ( MVDataEntry e: expected) {
+ assertTrue(readerIt.hasNext());
+ MVDataEntry r = readerIt.next();
+ System.out.println(e + " / " + r);
+ assertEquals(e, r);
+ }
+ assertFalse(readerIt.hasNext());
+ }
+ }
+
+}
diff --git a/src/connectors/JUTests/data/io/ldap/LDAPDataReaderTest.java b/src/connectors/JUTests/data/io/ldap/LDAPDataReaderTest.java
new file mode 100644
index 0000000..dcfc602
--- /dev/null
+++ b/src/connectors/JUTests/data/io/ldap/LDAPDataReaderTest.java
@@ -0,0 +1,94 @@
+package data.io.ldap;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import data.MVDataEntry;
+
+public class LDAPDataReaderTest {
+
+ LDAPConnectionWrapper builder;
+
+ @Before
+ public void setup() {
+ builder = new LDAPConnectionWrapper("localhost", 389, "uid=ldapadmin,ou=specialUsers,dc=univ-jfc,dc=fr", "secret");
+ }
+
+ /*
+ @Test
+ public void testLookAhead1() {
+ _testLookAhead(1);
+ }
+ */
+
+ @Test
+ public void testLookAhead16() {
+ _testLookAhead(16);
+ }
+
+ @Test
+ public void testLookAhead32() {
+ _testLookAhead(32);
+ }
+
+ @Test
+ public void testLookAhead64() {
+ _testLookAhead(64);
+ }
+
+ @Test
+ public void testLookAhead128() {
+ _testLookAhead(128);
+ }
+
+ @Test
+ public void testLookAhead192() {
+ _testLookAhead(192);
+ }
+
+ @Test
+ public void testLookAhead256() {
+ _testLookAhead(256);
+ }
+
+ @Test
+ public void testLookAhead512() {
+ _testLookAhead(512);
+ }
+
+ @Test
+ public void testLookAhead1024() {
+ _testLookAhead(1024);
+ }
+
+ private void _testLookAhead(int lookAheadAmount) {
+ System.out.println("_testLookAhead("+lookAheadAmount+")");
+ LDAPFlatDataReader reader = builder.newFlatReader("ldap_test", "ou=people,dc=univ-jfc,dc=fr", "uid", lookAheadAmount);
+
+ int resultCount = 0;
+ String previousKey=null;
+ for ( MVDataEntry entry : reader ) {
+ //System.out.println(entry);
+ if ( previousKey != null ) assertTrue(entry.getKey().compareTo(previousKey) > 0);
+ resultCount++;
+ previousKey=entry.getKey();
+ }
+ System.out.println(resultCount);
+ assertTrue(resultCount>0);
+
+ // Second time with a second iterator (must give the same results)
+ int newResultCount = 0;
+ previousKey=null;
+ for ( MVDataEntry entry : reader ) {
+ //System.out.println(entry);
+ if ( previousKey != null ) assertTrue(entry.getKey().compareTo(previousKey) > 0);
+ newResultCount++;
+ previousKey=entry.getKey();
+ }
+ System.out.println(newResultCount);
+ assertTrue(newResultCount == resultCount);
+
+ }
+}
diff --git a/src/connectors/JUTests/data/io/ldap/LDAPDataWriterTest.java b/src/connectors/JUTests/data/io/ldap/LDAPDataWriterTest.java
new file mode 100644
index 0000000..01a8af0
--- /dev/null
+++ b/src/connectors/JUTests/data/io/ldap/LDAPDataWriterTest.java
@@ -0,0 +1,16 @@
+package data.io.ldap;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class LDAPDataWriterTest {
+
+ @Test
+ public void test() {
+ fail("Not yet implemented");
+ }
+
+ // TODO : test update() extensively : null, empty string, add/update/delete subcases...
+
+}
diff --git a/src/connectors/JUTests/data/io/sql/SQLRelDataReaderTest.java b/src/connectors/JUTests/data/io/sql/SQLRelDataReaderTest.java
new file mode 100644
index 0000000..a97a98d
--- /dev/null
+++ b/src/connectors/JUTests/data/io/sql/SQLRelDataReaderTest.java
@@ -0,0 +1,115 @@
+package data.io.sql;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import data.MVDataEntry;
+import data.io.MVDataReader;
+import data.io.sql.SQLConnectionWrapper.DBMSType;
+
+
+/*
+
+CREATE TABLE sssync.people (
+ uid CHAR(16) NULL ,
+ uidNumber INT NOT NULL ,
+ gidNumber INT NULL ,
+ cn VARCHAR(45) NULL ,
+ sn VARCHAR(45) NULL ,
+ homeDirectory VARCHAR(45) NULL ,
+ PRIMARY KEY (uid) );
+INSERT INTO sssync.people (uid, uidNumber, gidNumber, cn, sn, homeDirectory) VALUES ('lpouzenc', 1000, 999, 'Ludovic', 'Pouzenc', '/home/lpouzenc');
+INSERT INTO sssync.people (uid, uidNumber, gidNumber, cn, sn, homeDirectory) VALUES ('dpouzenc', 1001, 999, 'Daniel', 'Pouzenc', '/home/dpouzenc');
+
+
+for i in $(seq 10000 20000); do echo "INSERT INTO sssync.people (uid, uidNumber, gidNumber, cn, sn, homeDirectory) VALUES ('test$i', $i, 999, '$i', 'test', '/home/test$i');"; done | mysql -uroot -p
+
+
+
+DROP TABLE IF EXISTS structures;
+CREATE TABLE structures (
+ supannCodeEntite varchar(15) NOT NULL,
+ ou varchar(45) NOT NULL,
+ supannTypeEntite varchar(45) NOT NULL,
+ supannCodeEntiteParent varchar(45) NOT NULL,
+ PRIMARY KEY (supannCodeEntite)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+INSERT INTO structures VALUES ('2','CUFR','Etablissement','2'),('9','Personnels','Groupe','2');
+
+
+
+TODO : make automated tests with embded Derby base
+
+ */
+public class SQLRelDataReaderTest {
+
+ private static final String TEST_REQUEST = "SELECT p.*, \"person;posixAccount;top\" as objectClass" +
+ " FROM sssync.people p" +
+ " ORDER BY 1 ASC;";
+
+ private SQLConnectionWrapper builder;
+ private MVDataReader reader1;
+ private MVDataReader reader2;
+
+ @Before
+ public void setup() throws IOException {
+ // Find the folder containing this test class
+ URL main = SQLRelDataReaderTest.class.getResource("SQLRelDataReaderTest.class");
+ if (!"file".equalsIgnoreCase(main.getProtocol()))
+ throw new IllegalStateException("This class is not stored in a file");
+ File currentFolder = new File(main.getPath()).getParentFile();
+
+ // Build a connection and two readers on it
+ builder = new SQLConnectionWrapper(DBMSType.mysql, "localhost", 3306, null, "root", "secret", "sssync");
+ reader1 = builder.newReader("testMysql1", TEST_REQUEST);
+ reader2 = builder.newReader("testMysql2", new File(currentFolder, "req_test.sql"));
+ }
+
+ @Test
+ public void testNext() {
+ // First full read on reader1
+ int resultCount_r1i1 = 0;
+ String previousKey_r1i1=null;
+ for ( MVDataEntry entry : reader1 ) {
+ //System.out.println(entry);
+ if ( previousKey_r1i1 != null ) assertTrue(entry.getKey().compareTo(previousKey_r1i1) > 0);
+ resultCount_r1i1++;
+ previousKey_r1i1=entry.getKey();
+ }
+ System.out.println(resultCount_r1i1);
+ assertTrue(resultCount_r1i1 > 0);
+
+ // First half read on reader2
+ int resultCount_r2i1 = 0;
+ String previousKey_r2i1=null;
+ for ( MVDataEntry entry : reader2 ) {
+ //System.out.println(entry);
+ if ( previousKey_r2i1 != null ) assertTrue(entry.getKey().compareTo(previousKey_r2i1) > 0);
+ resultCount_r2i1++;
+ previousKey_r2i1=entry.getKey();
+ if ( resultCount_r2i1 > resultCount_r1i1 / 2 ) break;
+ }
+ System.out.println(resultCount_r2i1);
+ assertTrue(resultCount_r2i1 > resultCount_r1i1 / 2 );
+
+ // Second time with a second iterator on reader1 (must give the same results than r1i1)
+ int resultCount_r1i2 = 0;
+ String previousKey_r1i2=null;
+ for ( MVDataEntry entry : reader1 ) {
+ //System.out.println(entry);
+ if ( previousKey_r1i2 != null ) assertTrue(entry.getKey().compareTo(previousKey_r1i2) > 0);
+ resultCount_r1i2++;
+ previousKey_r1i2=entry.getKey();
+ }
+ System.out.println(resultCount_r1i2);
+ assertTrue(resultCount_r1i2 == resultCount_r1i1);
+ }
+
+}
diff --git a/src/connectors/JUTests/data/io/sql/req_test.sql b/src/connectors/JUTests/data/io/sql/req_test.sql
new file mode 100644
index 0000000..ab66d5f
--- /dev/null
+++ b/src/connectors/JUTests/data/io/sql/req_test.sql
@@ -0,0 +1,5 @@
+SELECT
+ p.*,
+ "person;posixAccount;top" as objectClass
+FROM sssync.people p
+ORDER BY 1 ASC;