[tracker-miners/sam/test-fixes: 6/8] functional-tests: Update to specify graphs explicitly
- From: Sam Thursfield <sthursfield src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker-miners/sam/test-fixes: 6/8] functional-tests: Update to specify graphs explicitly
- Date: Fri, 1 May 2020 23:41:27 +0000 (UTC)
commit 992096652a9252a1e73b83ee871ff37879ccb6c1
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 a907a87e8..60edd6984 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."""
@@ -144,13 +148,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}>')
@@ -162,7 +167,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):
@@ -186,15 +191,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):
@@ -408,7 +414,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
@@ -418,7 +424,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 edd7414ea..71dc7f204 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):
# It's important that this directory exists BEFORE we start Tracker:
# it won't monitor an indexing root for changes if it doesn't exist,
@@ -164,7 +168,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):
@@ -209,7 +213,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"))
@@ -234,7 +238,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"))
@@ -248,8 +252,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()
@@ -274,7 +278,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)
@@ -306,8 +310,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()
@@ -328,9 +332,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]