[tracker/rss-enclosures] functional-test: fix the 'inverse' tests using the basic ontology in the future



commit 99d815175962c3ed57d742239926a43174e4a482
Author: Ivan Frade <ivan frade nokia com>
Date:   Mon Oct 18 20:05:12 2010 +0300

    functional-test: fix the 'inverse' tests using the basic ontology in the future
    
    The second ontology must be more recent than the first one in the tests. To avoid rewritting too many ontologies, included the same 'basic' ontology but in the future. So all changes 'basic'->X can be tested in the opposite direction with X->'basic-future'

 tests/functional-tests/17-ontology-changes.py      |   70 +++++++++-
 tests/functional-tests/test-ontologies/Makefile.am |    3 +-
 .../test-ontologies/basic-future/10-xsd.ontology   |   16 +++
 .../test-ontologies/basic-future/11-rdf.ontology   |  136 ++++++++++++++++++++
 .../test-ontologies/basic-future/12-nrl.ontology   |   18 +++
 .../test-ontologies/basic-future/20-dc.ontology    |   19 +++
 .../test-ontologies/basic-future/31-nao.ontology   |   23 ++++
 .../basic-future/90-tracker.ontology               |   27 ++++
 .../test-ontologies/basic-future/91-test.ontology  |   64 +++++++++
 .../test-ontologies/basic-future/Makefile.am       |   14 ++
 10 files changed, 382 insertions(+), 8 deletions(-)
---
diff --git a/tests/functional-tests/17-ontology-changes.py b/tests/functional-tests/17-ontology-changes.py
index 41895b9..d74b15c 100755
--- a/tests/functional-tests/17-ontology-changes.py
+++ b/tests/functional-tests/17-ontology-changes.py
@@ -39,6 +39,11 @@ XSD_DATETIME = "http://www.w3.org/2001/XMLSchema#dateTime";
 XSD_STRING = "http://www.w3.org/2001/XMLSchema#string";
 XSD_INTEGER = "http://www.w3.org/2001/XMLSchema#integer";
 
+TEST_PREFIX = "http://example.org/ns#";
+
+import re
+import time
+
 class OntologyChangeTestTemplate (ut.TestCase):
 
     def tearDown (self):
@@ -62,8 +67,14 @@ class OntologyChangeTestTemplate (ut.TestCase):
     def template_test_ontology_change (self):
 
         self.set_ontology_dirs ()
+
         
         basic_ontologies = self.get_ontology_dir (self.FIRST_ONTOLOGY_DIR)
+        modified_ontologies = self.get_ontology_dir (self.SECOND_ONTOLOGY_DIR)
+
+        self.__assert_ontology_dates (basic_ontologies, modified_ontologies)
+
+
         self.system.tracker_store_testing_start (ontodir=basic_ontologies)
         self.tracker = StoreHelper ()
         self.tracker.wait () #Safe guard. Returns when the store is ready
@@ -72,7 +83,6 @@ class OntologyChangeTestTemplate (ut.TestCase):
 
         try:
             # Boot the second set of ontologies
-            modified_ontologies = self.get_ontology_dir (self.SECOND_ONTOLOGY_DIR)
             self.system.tracker_store_restart_with_new_ontologies (modified_ontologies)
         except UnableToBootException, e:
             self.fail (str(self.__class__) + " " + str(e))
@@ -102,6 +112,52 @@ class OntologyChangeTestTemplate (ut.TestCase):
         raise Exception ("Subclasses must implement 'validate_status'")
 
 
+    def assertInDbusResult (self, member, dbus_result, column=0):
+        """
+        Convenience assertion used in these tests
+        """
+        for row in dbus_result:
+            if member == row[column]:
+                return
+        # This is going to fail with pretty printing
+        self.assertIn (member, dbus_result) 
+
+    def assertNotInDbusResult (self, member, dbus_result, column=0):
+        """
+        Convenience assertion used in these tests
+        """
+        for row in dbus_result:
+            if member == row[column]:
+                # This is going to fail with pretty printing
+                self.assertNotIn (member, dbus_result)
+        return
+
+    def __assert_ontology_dates (self, first_dir, second_dir):
+
+        ISO9601_REGEX = "(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z)"
+
+        def get_ontology_date (ontology):
+            for line in open (ontology, 'r'):
+                if "nao:lastModified" in line:
+                    getmodtime = re.compile ('nao:lastModified\ \"' + ISO9601_REGEX + '\"')
+                    modtime_match = getmodtime.search (line)
+
+                    if (modtime_match):
+                        nao_date = modtime_match.group (1)
+                        return time.strptime(nao_date, "%Y-%m-%dT%H:%M:%SZ")  
+                    else:
+                        print "something funky in", line
+                    break
+
+
+        first_date = get_ontology_date (os.path.join (first_dir, "91-test.ontology"))
+        second_date = get_ontology_date (os.path.join (second_dir, "91-test.ontology"))
+        if first_date >= second_date:
+            self.fail ("nao:modifiedTime in second ontology equal or earlier than in the first ontology")
+        
+
+        
+
 class PropertyRangeStringToDate (OntologyChangeTestTemplate):
     """
     Change the range of a property from string to date. There shouldn't be any data loss.
@@ -142,7 +198,7 @@ class PropertyRangeDateToString (OntologyChangeTestTemplate):
 
     def set_ontology_dirs (self):
         self.FIRST_ONTOLOGY_DIR = "property-range-string-to-date"
-        self.SECOND_ONTOLOGY_DIR = "basic"
+        self.SECOND_ONTOLOGY_DIR = "basic-future"
         
     def insert_data (self):
         self.instance = "test://ontology-change/property-range/date-to-string"
@@ -191,7 +247,7 @@ class PropertyRangeStringToInt (OntologyChangeTestTemplate):
 
     def set_ontology_dirs (self):
         self.FIRST_ONTOLOGY_DIR = "property-range-int-to-string"
-        self.SECOND_ONTOLOGY_DIR = "basic"
+        self.SECOND_ONTOLOGY_DIR = "basic-future"
 
     def insert_data (self):
         self.instance = "test://ontology-change/property-range/string-to-int"
@@ -219,7 +275,7 @@ class PropertyMaxCardinality1toN (OntologyChangeTestTemplate):
         #self.SECOND_ONTOLOGY_DIR = "cardinality"
 
         self.FIRST_ONTOLOGY_DIR = "cardinality"
-        self.SECOND_ONTOLOGY_DIR = "basic"
+        self.SECOND_ONTOLOGY_DIR = "basic-future"
 
     def insert_data (self):
         self.instance = "test://ontology-change/cardinality/1-to-n"
@@ -298,7 +354,7 @@ class ClassNotifyUnset (OntologyChangeTestTemplate):
 
     def set_ontology_dirs (self):
         self.FIRST_ONTOLOGY_DIR = "notify"
-        self.SECOND_ONTOLOGY_DIR = "basic"
+        self.SECOND_ONTOLOGY_DIR = "basic-future"
 
     def insert_data (self):
         self.instance = "test://ontology-change/notify/true"
@@ -362,12 +418,12 @@ class PropertyIndexedUnset (OntologyChangeTestTemplate):
     tracker:indexed property from true to false in single and multiple valued properties.
     Check that instances and content of the property are still in the DB.
     """
-    def test_ (self):
+    def test_indexer_unset (self):
         self.template_test_ontology_change ()
 
     def set_ontology_dirs (self):
         self.FIRST_ONTOLOGY_DIR = "indexed"
-        self.SECOND_ONTOLOGY_DIR = "basic"
+        self.SECOND_ONTOLOGY_DIR = "basic-future"
 
     def insert_data (self):
         # Instance with value in the single valued property
diff --git a/tests/functional-tests/test-ontologies/Makefile.am b/tests/functional-tests/test-ontologies/Makefile.am
index a9484e0..88d2c26 100644
--- a/tests/functional-tests/test-ontologies/Makefile.am
+++ b/tests/functional-tests/test-ontologies/Makefile.am
@@ -5,4 +5,5 @@ SUBDIRS = basic				\
 	property-range-string-to-date 	\
 	cardinality			\
 	notify				\
-	indexed
+	indexed				\
+	basic-future
diff --git a/tests/functional-tests/test-ontologies/basic-future/10-xsd.ontology b/tests/functional-tests/test-ontologies/basic-future/10-xsd.ontology
new file mode 100644
index 0000000..c22c5fd
--- /dev/null
+++ b/tests/functional-tests/test-ontologies/basic-future/10-xsd.ontology
@@ -0,0 +1,16 @@
+ prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+ prefix tracker: <http://www.tracker-project.org/ontologies/tracker#> .
+ prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+ prefix nao: <http://www.semanticdesktop.org/ontologies/2007/08/15/nao#> .
+
+xsd: a tracker:Namespace, tracker:Ontology ;
+	tracker:prefix "xsd" ;
+	nao:lastModified "2010-02-16T11:00:00Z" .
+
+xsd:string a rdfs:Class .
+xsd:boolean a rdfs:Class .
+xsd:integer a rdfs:Class .
+xsd:double a rdfs:Class .
+xsd:date a rdfs:Class .
+xsd:dateTime a rdfs:Class .
+
diff --git a/tests/functional-tests/test-ontologies/basic-future/11-rdf.ontology b/tests/functional-tests/test-ontologies/basic-future/11-rdf.ontology
new file mode 100644
index 0000000..7a485a9
--- /dev/null
+++ b/tests/functional-tests/test-ontologies/basic-future/11-rdf.ontology
@@ -0,0 +1,136 @@
+ prefix nrl: <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#> .
+ prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+ prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+ prefix tracker: <http://www.tracker-project.org/ontologies/tracker#> .
+ prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+ prefix nao: <http://www.semanticdesktop.org/ontologies/2007/08/15/nao#> .
+
+rdf: a tracker:Namespace, tracker:Ontology ;
+	tracker:prefix "rdf" ;
+	nao:lastModified "2010-06-29T13:00:00Z" .
+
+rdfs: a tracker:Namespace ;
+	tracker:prefix "rdfs" .
+
+rdfs:Resource a rdfs:Class ;
+	rdfs:label "All Resources" ;
+	rdfs:comment "All resources" .
+
+rdfs:Class a rdfs:Class ;
+	rdfs:label "Class" ;
+	rdfs:subClassOf rdfs:Resource .
+
+rdf:Property a rdfs:Class ;
+	rdfs:label "Property" ;
+	rdfs:subClassOf rdfs:Resource .
+
+rdfs:Literal a rdfs:Class ;
+	rdfs:label "Literal" ;
+	rdfs:subClassOf rdfs:Resource .
+
+rdf:type a rdf:Property ;
+	rdfs:domain rdfs:Resource ;
+	rdfs:range rdfs:Class .
+
+rdfs:subClassOf a rdf:Property ;
+	rdfs:domain rdfs:Class ;
+	rdfs:range rdfs:Class .
+
+rdfs:subPropertyOf a rdf:Property ;
+	rdfs:domain rdf:Property ;
+	rdfs:range rdf:Property .
+
+rdfs:comment a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdfs:Resource ;
+	rdfs:range xsd:string .
+
+rdfs:label a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdfs:Resource ;
+	rdfs:range xsd:string .
+
+rdfs:domain a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdf:Property ;
+	rdfs:range rdfs:Resource .
+
+rdfs:range a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdf:Property ;
+	rdfs:range rdfs:Class .
+
+tracker: a tracker:Namespace ;
+	tracker:prefix "tracker" .
+
+tracker:Namespace a rdfs:Class ;
+	rdfs:label "Namespace" ;
+	rdfs:subClassOf rdfs:Resource .
+
+tracker:Ontology a rdfs:Class ;
+	rdfs:label "Ontology" ;
+	rdfs:subClassOf rdfs:Resource .
+
+tracker:prefix a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain tracker:Namespace ;
+	rdfs:range xsd:string .
+
+tracker:domainIndex a rdf:Property ;
+	rdfs:domain rdfs:Class ;
+	rdfs:range rdf:Property .
+
+tracker:indexed a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdf:Property ;
+	rdfs:range xsd:boolean .
+
+tracker:secondaryIndex a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdf:Property ;
+	rdfs:range rdf:Property .
+
+tracker:fulltextIndexed a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdf:Property ;
+	rdfs:range xsd:boolean .
+
+tracker:fulltextNoLimit a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdf:Property ;
+	rdfs:range xsd:boolean .
+
+tracker:transient a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdf:Property ;
+	rdfs:range xsd:boolean .
+
+tracker:isAnnotation a rdf:Property ;
+	rdfs:comment "The property is never embedded on physical files" ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdf:Property ;
+	rdfs:range xsd:boolean .
+
+tracker:weight a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdf:Property ;
+	rdfs:range xsd:integer .
+
+tracker:defaultValue a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdf:Property ;
+	rdfs:range xsd:string .
+
+tracker:added a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdfs:Resource ;
+	rdfs:range xsd:dateTime ;
+	tracker:isAnnotation true .
+
+# implicitly updated modification time
+tracker:modified a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdfs:Resource ;
+	rdfs:range xsd:integer ;
+	tracker:isAnnotation true .
+
diff --git a/tests/functional-tests/test-ontologies/basic-future/12-nrl.ontology b/tests/functional-tests/test-ontologies/basic-future/12-nrl.ontology
new file mode 100644
index 0000000..381e0c3
--- /dev/null
+++ b/tests/functional-tests/test-ontologies/basic-future/12-nrl.ontology
@@ -0,0 +1,18 @@
+ prefix nrl: <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#> .
+ prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+ prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+ prefix tracker: <http://www.tracker-project.org/ontologies/tracker#> .
+ prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+ prefix nao: <http://www.semanticdesktop.org/ontologies/2007/08/15/nao#> .
+
+nrl: a tracker:Namespace, tracker:Ontology ;
+	tracker:prefix "nrl" ;
+	nao:lastModified "2010-02-16T11:00:00Z" .
+
+nrl:InverseFunctionalProperty a rdfs:Class .
+
+nrl:maxCardinality a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdf:Property ;
+	rdfs:range xsd:integer .
+
diff --git a/tests/functional-tests/test-ontologies/basic-future/20-dc.ontology b/tests/functional-tests/test-ontologies/basic-future/20-dc.ontology
new file mode 100644
index 0000000..3567110
--- /dev/null
+++ b/tests/functional-tests/test-ontologies/basic-future/20-dc.ontology
@@ -0,0 +1,19 @@
+ prefix dc: <http://purl.org/dc/elements/1.1/> .
+ prefix nrl: <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#> .
+ prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+ prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+ prefix tracker: <http://www.tracker-project.org/ontologies/tracker#> .
+ prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+ prefix nao: <http://www.semanticdesktop.org/ontologies/2007/08/15/nao#> .
+
+dc: a tracker:Namespace, tracker:Ontology ;
+	tracker:prefix "dc" ;
+	nao:lastModified "2010-03-23T16:00:00Z" .
+
+dc:date a rdf:Property ;
+	rdfs:label "Date" ;
+	rdfs:comment "A point or period of time associated with an event in the lifecycle of the resource." ;
+	rdfs:domain rdfs:Resource ;
+	rdfs:range xsd:dateTime .
+
+
diff --git a/tests/functional-tests/test-ontologies/basic-future/31-nao.ontology b/tests/functional-tests/test-ontologies/basic-future/31-nao.ontology
new file mode 100644
index 0000000..8303bc1
--- /dev/null
+++ b/tests/functional-tests/test-ontologies/basic-future/31-nao.ontology
@@ -0,0 +1,23 @@
+ prefix dc: <http://purl.org/dc/elements/1.1/> .
+ prefix nao: <http://www.semanticdesktop.org/ontologies/2007/08/15/nao#> .
+ prefix nie: <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> .
+ prefix nrl: <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#> .
+ prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+ prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+ prefix tracker: <http://www.tracker-project.org/ontologies/tracker#> .
+ prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+ prefix nao: <http://www.semanticdesktop.org/ontologies/2007/08/15/nao#> .
+
+nao: a tracker:Namespace, tracker:Ontology ;
+	tracker:prefix "nao" ;
+	nao:lastModified "2010-03-23T16:00:00Z" .
+
+nao:lastModified a rdf:Property ;
+	rdfs:label "lastModified" ;
+	rdfs:comment "last modification date" ;
+	rdfs:subPropertyOf dc:date ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdfs:Resource ;
+	rdfs:range xsd:dateTime .
+
+
diff --git a/tests/functional-tests/test-ontologies/basic-future/90-tracker.ontology b/tests/functional-tests/test-ontologies/basic-future/90-tracker.ontology
new file mode 100644
index 0000000..eef0cd4
--- /dev/null
+++ b/tests/functional-tests/test-ontologies/basic-future/90-tracker.ontology
@@ -0,0 +1,27 @@
+ prefix fts: <http://www.tracker-project.org/ontologies/fts#> .
+ prefix nao: <http://www.semanticdesktop.org/ontologies/2007/08/15/nao#> .
+ prefix nie: <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> .
+ prefix nrl: <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#> .
+ prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+ prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+ prefix tracker: <http://www.tracker-project.org/ontologies/tracker#> .
+ prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+tracker: a tracker:Ontology ;
+	nao:lastModified "2010-04-05T11:00:00Z" .
+
+#tracker:indexed a rdf:Property ;
+#	nrl:maxCardinality 1 ;
+#	rdfs:domain rdf:Property ;
+#	rdfs:range xsd:boolean .
+
+tracker:notify a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdfs:Class ;
+	rdfs:range xsd:boolean .
+
+tracker:writeback a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdf:Property ;
+	rdfs:range xsd:boolean .
+
diff --git a/tests/functional-tests/test-ontologies/basic-future/91-test.ontology b/tests/functional-tests/test-ontologies/basic-future/91-test.ontology
new file mode 100644
index 0000000..38d9b83
--- /dev/null
+++ b/tests/functional-tests/test-ontologies/basic-future/91-test.ontology
@@ -0,0 +1,64 @@
+ prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+ prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+ prefix tracker: <http://www.tracker-project.org/ontologies/tracker#> .
+ prefix test: <http://example.org/ns#> .
+ prefix nao: <http://www.semanticdesktop.org/ontologies/2007/08/15/nao#> .
+ prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+ prefix nrl: <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#> .
+
+#
+# Note: If you modify this ontology remember to replicate the changes in the other
+#   91 ontologies
+#
+#
+#       A (with props for string and int, string n-cardinality, )
+#      / \
+#     B   C
+#
+test: a tracker:Namespace, tracker:Ontology ;
+        nao:lastModified "2012-12-12T11:00:04Z" ;
+        tracker:prefix "test" .
+
+test:A a rdfs:Class .
+
+test:a_string a rdf:Property ;
+    rdfs:comment "Property to test the conversions from string" ;
+    rdfs:domain test:A ;
+    rdfs:range  xsd:string ;
+    nrl:maxCardinality 1 .
+
+test:a_datetime a rdf:Property ;
+    rdfs:comment "Property to test the changes string/date" ;
+    rdfs:domain test:A ;
+    rdfs:range  xsd:dateTime ;
+    nrl:maxCardinality 1 .
+
+test:a_int a rdf:Property ;
+    rdfs:comment "Property to test the changes string/int" ;
+    rdfs:domain test:A ;
+    rdfs:range  xsd:integer ;
+    nrl:maxCardinality 1 .
+
+test:a_n_cardinality a rdf:Property ;
+    rdfs:comment "Property to test the cardinality changes" ;
+    rdfs:domain test:A ;
+    rdfs:range xsd:string .
+# Max cardinality N because is not specified
+
+test:a_superprop a rdf:Property ;
+    rdfs:comment "To use as superproperty and test the superproperty changes in the subprop." ;
+    rdfs:domain test:A ;
+    rdfs:range xsd:string .
+ 
+
+test:B a rdfs:Class ;
+    rdfs:subClassOf test:A .
+
+test:C a rdfs:Class ;
+    rdfs:subClassOf test:A .
+
+test:c_subprop a rdf:Property ;
+     rdfs:comment "To test changes in the superproperty" ;
+     rdfs:subPropertyOf test:a_superprop ;
+     rdfs:domain test:C ;
+     rdfs:range xsd:string .
diff --git a/tests/functional-tests/test-ontologies/basic-future/Makefile.am b/tests/functional-tests/test-ontologies/basic-future/Makefile.am
new file mode 100644
index 0000000..c61db95
--- /dev/null
+++ b/tests/functional-tests/test-ontologies/basic-future/Makefile.am
@@ -0,0 +1,14 @@
+include $(top_srcdir)/Makefile.decl
+
+basicfutdir = $(datadir)/tracker-tests/test-ontologies/basic-future
+
+basicfut_DATA =			\
+	10-xsd.ontology 	\
+	11-rdf.ontology 	\
+	12-nrl.ontology 	\
+	20-dc.ontology		\
+	31-nao.ontology 	\
+	90-tracker.ontology  	\
+	91-test.ontology
+
+EXTRA_DIST = $(basicfut_DATA)
\ No newline at end of file



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]