[tracker-miners/sam/test-fixes: 6/8] functional-tests: Update to specify graphs explicitly



commit 18778e8d24ff38f7b2c2151c13a1039048724e6f
Author: Sam Thursfield <sam afuera me uk>
Date:   Fri May 1 21:41:53 2020 +0200

    functional-tests: Update to specify graphs explicitly
    
    Apps should be specifying the graph explicitly with Tracker 3, and so
    should the tests.

 tests/functional-tests/extractor-decorator.py    |  4 ++--
 tests/functional-tests/fixtures.py               | 22 ++++++++++++-------
 tests/functional-tests/fts-file-operations.py    |  2 +-
 tests/functional-tests/miner-basic.py            | 26 ++++++++++++----------
 tests/functional-tests/miner-resource-removal.py | 28 ++++++++++++++----------
 5 files changed, 49 insertions(+), 33 deletions(-)
---
diff --git a/tests/functional-tests/extractor-decorator.py b/tests/functional-tests/extractor-decorator.py
index 24d8d17ba..da9d7f834 100755
--- a/tests/functional-tests/extractor-decorator.py
+++ b/tests/functional-tests/extractor-decorator.py
@@ -44,7 +44,7 @@ class ExtractorDecoratorTest(fixtures.TrackerMinerTest):
         # Insert a valid file and wait extraction of its metadata.
         file_path = os.path.join(self.indexed_dir, os.path.basename(VALID_FILE))
         expected = f'a nmm:MusicPiece ; nie:title "{VALID_FILE_TITLE}"'
-        with self.tracker.await_insert(expected) as resource:
+        with self.tracker.await_insert(fixtures.AUDIO_GRAPH, expected) as resource:
             shutil.copy(VALID_FILE, file_path)
         file_urn = resource.urn
 
@@ -62,7 +62,7 @@ class ExtractorDecoratorTest(fixtures.TrackerMinerTest):
             # Request re-indexing (same as `tracker index --file ...`)
             # The extractor should reindex the file and re-add the metadata that we
             # deleted, so we should see the nie:title property change.
-            with self.tracker.await_insert(f'nie:title "{VALID_FILE_TITLE}"'):
+            with self.tracker.await_insert(fixtures.AUDIO_GRAPH, f'nie:title "{VALID_FILE_TITLE}"'):
                 miner_fs.index_file(file_uri)
 
             title_result = store.query('SELECT ?title { <%s> nie:interpretedAs/nie:title ?title }' % 
file_uri)
diff --git a/tests/functional-tests/fixtures.py b/tests/functional-tests/fixtures.py
index a1baa1082..97619b793 100644
--- a/tests/functional-tests/fixtures.py
+++ b/tests/functional-tests/fixtures.py
@@ -46,6 +46,10 @@ from minerfshelper import MinerFsHelper
 
 log = logging.getLogger(__name__)
 
+AUDIO_GRAPH = "http://tracker.api.gnome.org/ontology/v3/tracker#Audio";
+DOCUMENTS_GRAPH = "http://tracker.api.gnome.org/ontology/v3/tracker#Documents";
+PICTURES_GRAPH = "http://tracker.api.gnome.org/ontology/v3/tracker#Pictures";
+
 
 def tracker_test_main():
     """Entry point which must be called by all functional test modules."""
@@ -150,13 +154,14 @@ class TrackerMinerTest(ut.TestCase):
             content_escaped = Tracker.sparql_escape_string(content)
             expected += [f'nie:plainTextContent "{content_escaped}"']
 
-        return self.tracker.await_insert('; '.join(expected))
+        return self.tracker.await_insert(DOCUMENTS_GRAPH, '; '.join(expected))
 
     def await_document_uri_change(self, resource_id, from_path, to_path):
         """Wraps await_update() context manager."""
         from_url = self.uri(from_path)
         to_url = self.uri(to_path)
-        return self.tracker.await_update(resource_id,
+        return self.tracker.await_update(DOCUMENTS_GRAPH,
+                                         resource_id,
                                          f'nie:isStoredAs <{from_url}>',
                                          f'nie:isStoredAs <{to_url}>')
 
@@ -168,7 +173,7 @@ class TrackerMinerTest(ut.TestCase):
             f'nie:isStoredAs <{url}>',
         ]
 
-        return self.tracker.await_insert('; '.join(expected))
+        return self.tracker.await_insert(PICTURES_GRAPH, '; '.join(expected))
 
 
 class TrackerMinerFTSTest (TrackerMinerTest):
@@ -192,15 +197,16 @@ class TrackerMinerFTSTest (TrackerMinerTest):
 
         if path.exists():
             old_text_escaped = Tracker.sparql_escape_string(path.read_text())
-            resource_id = self.tracker.get_resource_id(self.uri(self.testfile))
-            with self.tracker.await_update(resource_id,
+            resource_id = self.tracker.get_content_resource_id(self.uri(self.testfile))
+            with self.tracker.await_update(DOCUMENTS_GRAPH,
+                                           resource_id,
                                            f'nie:plainTextContent "{old_text_escaped}"',
                                            f'nie:plainTextContent "{text_escaped}"'):
                 path.write_text(text)
         else:
             url = self.uri(self.testfile)
             expected = f'a nfo:Document; nie:isStoredAs <{url}>; nie:plainTextContent "{text_escaped}"'
-            with self.tracker.await_insert(expected):
+            with self.tracker.await_insert(DOCUMENTS_GRAPH, expected):
                 path.write_text(text)
 
     def search_word(self, word):
@@ -414,7 +420,7 @@ class TrackerWritebackTest (TrackerMinerTest):
 
         # Copy and wait. The extractor adds the nfo:duration property.
         expected = f'a nfo:Audio ; nie:isStoredAs <{url}> ; nfo:duration ?duration'
-        with self.tracker.await_insert(expected):
+        with self.tracker.await_insert(AUDIO_GRAPH, expected):
             shutil.copy(path, self.indexed_dir)
         return path
 
@@ -424,7 +430,7 @@ class TrackerWritebackTest (TrackerMinerTest):
 
         # Copy and wait. The extractor adds the nfo:width property.
         expected = f'a nfo:Image ; nie:isStoredAs <{url}> ; nfo:width ?width'
-        with self.tracker.await_insert(expected):
+        with self.tracker.await_insert(PICTURES_GRAPH, expected):
             shutil.copy(source_path, self.indexed_dir)
         return dest_path
 
diff --git a/tests/functional-tests/fts-file-operations.py b/tests/functional-tests/fts-file-operations.py
index f9b65d24d..3323100fb 100755
--- a/tests/functional-tests/fts-file-operations.py
+++ b/tests/functional-tests/fts-file-operations.py
@@ -55,7 +55,7 @@ class MinerFTSFileOperationsTest(fixtures.TrackerMinerFTSTest):
         self.basic_test(TEXT, "automobile")
 
         id = self._query_id(self.uri(self.testfile))
-        with self.tracker.await_delete(id):
+        with self.tracker.await_delete(fixtures.DOCUMENTS_GRAPH, id):
             os.remove(self.path(self.testfile))
 
         results = self.search_word("automobile")
diff --git a/tests/functional-tests/miner-basic.py b/tests/functional-tests/miner-basic.py
index 00d1c1aff..86f326800 100755
--- a/tests/functional-tests/miner-basic.py
+++ b/tests/functional-tests/miner-basic.py
@@ -34,6 +34,7 @@ import shutil
 import time
 import unittest as ut
 
+import configuration as cfg
 import fixtures
 
 
@@ -59,11 +60,14 @@ class MinerCrawlTest(fixtures.TrackerMinerTest):
 
             for tf in monitored_files:
                 url = self.uri(tf)
-                self.tracker.ensure_resource(f"a nfo:Document ; nie:url <{url}>")
+                self.tracker.ensure_resource(fixtures.DOCUMENTS_GRAPH,
+                                             f"a nfo:Document ; nie:isStoredAs <{url}>")
         except Exception:
             cfg.remove_monitored_test_dir(self.workdir)
             raise
 
+        logging.info("%s.setUp(): complete", self)
+
     def create_test_data(self):
         monitored_files = [
             'test-monitored/file1.txt',
@@ -158,7 +162,7 @@ class MinerCrawlTest(fixtures.TrackerMinerTest):
         self.assertIn(self.uri("test-monitored/file0.txt"), unpacked_result)
 
         # Clean the new file so the test directory is as before
-        with self.tracker.await_delete(dest_id):
+        with self.tracker.await_delete(fixtures.DOCUMENTS_GRAPH, dest_id):
             os.remove(dest)
 
     def test_03_copy_from_monitored_to_unmonitored(self):
@@ -203,7 +207,7 @@ class MinerCrawlTest(fixtures.TrackerMinerTest):
         self.assertIn(self.uri("test-monitored/dir1/dir2/file3.txt"), unpacked_result)
         self.assertIn(self.uri("test-monitored/dir1/dir2/file-test04.txt"), unpacked_result)
 
-        with self.tracker.await_delete(dest_id):
+        with self.tracker.await_delete(fixtures.DOCUMENTS_GRAPH, dest_id):
             os.remove(dest)
 
         self.assertEqual(3, self.tracker.count_instances("nfo:TextDocument"))
@@ -228,7 +232,7 @@ class MinerCrawlTest(fixtures.TrackerMinerTest):
         self.assertIn(self.uri("test-monitored/dir1/dir2/file3.txt"), unpacked_result)
         self.assertIn(self.uri("test-monitored/dir1/file-test05.txt"), unpacked_result)
 
-        with self.tracker.await_delete(dest_id):
+        with self.tracker.await_delete(fixtures.DOCUMENTS_GRAPH, dest_id):
             os.remove(dest)
 
         self.assertEqual(3, self.tracker.count_instances("nfo:TextDocument"))
@@ -242,8 +246,8 @@ class MinerCrawlTest(fixtures.TrackerMinerTest):
         """
         source = self.path("test-monitored/dir1/file2.txt")
         dest = self.path("test-no-monitored/file2.txt")
-        source_id = self.tracker.get_resource_id(self.uri(source))
-        with self.tracker.await_delete(source_id):
+        source_id = self.tracker.get_content_resource_id(self.uri(source))
+        with self.tracker.await_delete(fixtures.DOCUMENTS_GRAPH, source_id):
             shutil.move(source, dest)
 
         result = self.__get_text_documents()
@@ -268,7 +272,7 @@ class MinerCrawlTest(fixtures.TrackerMinerTest):
         parent_before = self.__get_parent_urn(source)
         self.assertEqual(source_dir_urn, parent_before)
 
-        resource_id = self.tracker.get_resource_id(url=self.uri(source))
+        resource_id = self.tracker.get_content_resource_id(url=self.uri(source))
         with self.await_document_uri_change(resource_id, source, dest):
             shutil.move(source, dest)
 
@@ -300,8 +304,8 @@ class MinerCrawlTest(fixtures.TrackerMinerTest):
         Delete one of the files
         """
         victim = self.path("test-monitored/dir1/file2.txt")
-        victim_id = self.tracker.get_resource_id(self.uri(victim))
-        with self.tracker.await_delete(victim_id):
+        victim_id = self.tracker.get_content_resource_id(self.uri(victim))
+        with self.tracker.await_delete(fixtures.DOCUMENTS_GRAPH, victim_id):
             os.remove(victim)
 
         result = self.__get_text_documents()
@@ -322,9 +326,9 @@ class MinerCrawlTest(fixtures.TrackerMinerTest):
         victim = self.path("test-monitored/dir1")
 
         file_inside_victim_url = self.uri(os.path.join(victim, "file2.txt"))
-        file_inside_victim_id = self.tracker.get_resource_id(file_inside_victim_url)
+        file_inside_victim_id = self.tracker.get_content_resource_id(file_inside_victim_url)
 
-        with self.tracker.await_delete(file_inside_victim_id):
+        with self.tracker.await_delete(fixtures.DOCUMENTS_GRAPH, file_inside_victim_id):
             shutil.rmtree(victim)
 
         result = self.__get_text_documents()
diff --git a/tests/functional-tests/miner-resource-removal.py 
b/tests/functional-tests/miner-resource-removal.py
index da27c2eea..5e143681a 100755
--- a/tests/functional-tests/miner-resource-removal.py
+++ b/tests/functional-tests/miner-resource-removal.py
@@ -27,7 +27,6 @@ import unittest as ut
 
 import fixtures
 
-TRACKER_TEST_GRAPH = "tracker:Documents"
 
 class MinerResourceRemovalTest(fixtures.TrackerMinerTest):
 
@@ -35,17 +34,18 @@ class MinerResourceRemovalTest(fixtures.TrackerMinerTest):
         # Override content from the base class
         pass
 
-    def create_test_content(self, file_urn, title):
-        sparql = "WITH %s INSERT { \
+    def create_extra_audio_content(self, file_urn, url, title):
+        sparql = "WITH <%s> INSERT { \
                     <%s> a nmm:MusicPiece ; \
                          nie:title \"%s\" ; \
-                  } " % (TRACKER_TEST_GRAPH, file_urn, title)
+                         nie:isStoredAs <%s> . \
+                  } " % (fixtures.AUDIO_GRAPH, file_urn, title, url)
 
-        with self.tracker.await_insert(f'a nmm:MusicPiece; nie:title "{title}"') as resource:
+        with self.tracker.await_insert(fixtures.AUDIO_GRAPH, f'a nmm:MusicPiece; nie:title "{title}"') as 
resource:
             self.tracker.update(sparql)
         return resource
 
-    def create_test_file(self, file_name):
+    def create_text_file(self, file_name):
         path = pathlib.Path(self.path(file_name))
         text = "Test"
 
@@ -59,12 +59,18 @@ class MinerResourceRemovalTest(fixtures.TrackerMinerTest):
         in a file is deleted when the file is deleted.
         """
 
-        file_1 = self.create_test_file("test-monitored/test_1.txt")
-        file_2 = self.create_test_file("test-monitored/test_2.txt")
-        ie_1 = self.create_test_content(file_1.urn, "Test resource 1")
-        ie_2 = self.create_test_content(file_2.urn, "Test resource 2")
+        file_1_name = "test-monitored/test_1.txt"
+        file_2_name = "test-monitored/test_2.txt"
 
-        with self.tracker.await_delete(file_1.id):
+        file_1 = self.create_text_file(self.path(file_1_name))
+        file_2 = self.create_text_file(self.path(file_2_name))
+        # This creates an unrealistic situation, in which a text data-object
+        # has audio content. Because nie:isStoredAs links it to the text file,
+        # it should nevertheless be removed when the text file is deleted.
+        ie_1 = self.create_extra_audio_content(file_1.urn, self.uri(file_1_name), "Test resource 1")
+        ie_2 = self.create_extra_audio_content(file_2.urn, self.uri(file_2_name), "Test resource 2")
+
+        with self.tracker.await_delete(fixtures.DOCUMENTS_GRAPH, file_1.id):
             os.unlink(self.path("test-monitored/test_1.txt"))
 
         self.assertResourceMissing(file_1.urn)


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