Пример #1
0
    def test_02_copy_from_unmonitored_to_monitored(self):
        """
        Copy an file from unmonitored directory to monitored directory
        and verify if data base is updated accordingly
        """
        source = os.path.join(MINER_TMP_DIR, "test-no-monitored", "file0.txt")
        dest = os.path.join(MINER_TMP_DIR, "test-monitored", "file0.txt")
        shutil.copyfile(source, dest)

        dest_id, dest_urn = self.system.store.await_resource_inserted(
            'nfo:TextDocument', uri(dest))

        # verify if miner indexed this file.
        result = self.__get_text_documents()
        self.assertEquals(len(result), 4)
        unpacked_result = [r[0] for r in result]
        self.assertIn(uri("test-monitored/file1.txt"), unpacked_result)
        self.assertIn(uri("test-monitored/dir1/file2.txt"), unpacked_result)
        self.assertIn(uri("test-monitored/dir1/dir2/file3.txt"),
                      unpacked_result)
        self.assertIn(uri("test-monitored/file0.txt"), unpacked_result)

        # Clean the new file so the test directory is as before
        log("Remove and wait")
        os.remove(dest)
        self.system.store.await_resource_deleted(dest_id)
Пример #2
0
    def test_05_move_from_unmonitored_to_monitored(self):
        """
        Move a file from unmonitored to monitored directory
        """
        source = os.path.join(MINER_TMP_DIR, "test-no-monitored", "file0.txt")
        dest = os.path.join(MINER_TMP_DIR, "test-monitored", "dir1",
                            "file-test05.txt")
        shutil.move(source, dest)
        dest_id, dest_urn = self.system.store.await_resource_inserted(
            'nfo:TextDocument', uri(dest))

        result = self.__get_text_documents()
        self.assertEquals(len(result), 4)
        unpacked_result = [r[0] for r in result]
        self.assertIn(uri("test-monitored/file1.txt"), unpacked_result)
        self.assertIn(uri("test-monitored/dir1/file2.txt"), unpacked_result)
        self.assertIn(uri("test-monitored/dir1/dir2/file3.txt"),
                      unpacked_result)
        self.assertIn(uri("test-monitored/dir1/file-test05.txt"),
                      unpacked_result)

        # Clean the file
        os.remove(dest)
        self.system.store.await_resource_deleted(dest_id)
        self.assertEquals(3, self.tracker.count_instances("nfo:TextDocument"))
Пример #3
0
    def test_09_deletion_directory (self):
        """
        Delete a directory
        """
        victim = path("test-monitored/dir1")
        victim_id = self.system.store.get_resource_id (uri(victim))
        shutil.rmtree (victim)

        file_inside_victim_url = uri (os.path.join (victim, "file2.txt"))
        file_inside_victim_id = self.system.store.get_resource_id (file_inside_victim_url)
        self.system.store.await_resource_deleted (file_inside_victim_id)

        result = self.__get_text_documents ()
        self.assertEquals (len (result), 1)
        unpacked_result = [ r[0] for r in result]
        self.assertIn ( uri ("test-monitored/file1.txt"), unpacked_result)

        # Restore the dirs
        os.makedirs (path("test-monitored/dir1"))
        os.makedirs (path("test-monitored/dir1/dir2"))
        for f in ["test-monitored/dir1/file2.txt",
                  "test-monitored/dir1/dir2/file3.txt"]:
            filename = path(f)
            writer = open (filename, "w")
            writer.write ("Don't panic, everything is fine")
            writer.close ()
            self.system.store.await_resource_inserted ('nfo:TextDocument', uri(f))

        # Check everything is fine
        result = self.__get_text_documents ()
        self.assertEquals (len (result), 3)
Пример #4
0
    def test_09_deletion_directory(self):
        """
        Delete a directory
        """
        victim = path("test-monitored/dir1")
        victim_id = self.system.store.get_resource_id(uri(victim))
        shutil.rmtree(victim)

        file_inside_victim_url = uri(os.path.join(victim, "file2.txt"))
        file_inside_victim_id = self.system.store.get_resource_id(
            file_inside_victim_url)
        self.system.store.await_resource_deleted(file_inside_victim_id)

        result = self.__get_text_documents()
        self.assertEquals(len(result), 1)
        unpacked_result = [r[0] for r in result]
        self.assertIn(uri("test-monitored/file1.txt"), unpacked_result)

        # Restore the dirs
        os.makedirs(path("test-monitored/dir1"))
        os.makedirs(path("test-monitored/dir1/dir2"))
        for f in [
                "test-monitored/dir1/file2.txt",
                "test-monitored/dir1/dir2/file3.txt"
        ]:
            filename = path(f)
            writer = open(filename, "w")
            writer.write("Don't panic, everything is fine")
            writer.close()
            self.system.store.await_resource_inserted('nfo:TextDocument',
                                                      uri(f))

        # Check everything is fine
        result = self.__get_text_documents()
        self.assertEquals(len(result), 3)
Пример #5
0
    def test_02_multiple_words (self):
        TEXT = "automobile with unlimited power"
        self.set_text (TEXT)
        
        results = self.search_word ("automobile")
        self.assertEquals (len (results), 1)
        self.assertIn (uri (self.testfile), results)

        results = self.search_word ("unlimited")
        self.assertEquals (len (results), 1)
        self.assertIn (uri (self.testfile), results)
Пример #6
0
    def test_02_multiple_words (self):
        TEXT = "automobile with unlimited power"
        self.set_text (TEXT)
        
        results = self.search_word ("automobile")
        self.assertEquals (len (results), 1)
        self.assertIn (uri (self.testfile), results)

        results = self.search_word ("unlimited")
        self.assertEquals (len (results), 1)
        self.assertIn (uri (self.testfile), results)
Пример #7
0
    def test_05_word_in_multiple_files (self):
        # Safeguard, in the case we modify the DEFAULT_TEXT later...
        assert "content" in DEFAULT_TEXT

        self.set_text (DEFAULT_TEXT)
        results = self.search_word ("content")
        self.assertEquals (len (results), 4)
        self.assertIn ( uri (self.testfile), results)
        self.assertIn ( uri ("test-monitored/file1.txt"), results)
        self.assertIn ( uri ("test-monitored/dir1/file2.txt"), results)
        self.assertIn ( uri ("test-monitored/dir1/dir2/file3.txt"), results)
Пример #8
0
    def test_05_word_in_multiple_files (self):
        # Safeguard, in the case we modify the DEFAULT_TEXT later...
        assert "content" in DEFAULT_TEXT

        self.set_text (DEFAULT_TEXT)
        results = self.search_word ("content")
        self.assertEquals (len (results), 4)
        self.assertIn ( uri (self.testfile), results)
        self.assertIn ( uri ("test-monitored/file1.txt"), results)
        self.assertIn ( uri ("test-monitored/dir1/file2.txt"), results)
        self.assertIn ( uri ("test-monitored/dir1/dir2/file3.txt"), results)
Пример #9
0
 def test_01_initial_crawling (self):
     """
     The precreated files and folders should be there
     """
     # Maybe the information hasn't been committed yet
     time.sleep (1)
     result = self.__get_text_documents ()
     self.assertEquals (len (result), 3)
     unpacked_result = [ r[0] for r in result]
     self.assertIn ( uri ("test-monitored/file1.txt"), unpacked_result)
     self.assertIn ( uri ("test-monitored/dir1/file2.txt"), unpacked_result)
     self.assertIn ( uri ("test-monitored/dir1/dir2/file3.txt"), unpacked_result)
Пример #10
0
 def test_01_initial_crawling(self):
     """
     The precreated files and folders should be there
     """
     # Maybe the information hasn't been committed yet
     time.sleep(1)
     result = self.__get_text_documents()
     self.assertEquals(len(result), 3)
     unpacked_result = [r[0] for r in result]
     self.assertIn(uri("test-monitored/file1.txt"), unpacked_result)
     self.assertIn(uri("test-monitored/dir1/file2.txt"), unpacked_result)
     self.assertIn(uri("test-monitored/dir1/dir2/file3.txt"),
                   unpacked_result)
Пример #11
0
    def test_09_deletion_directory (self):
        """
        Delete a directory
        """
        victim = os.path.join (MINER_TMP_DIR, "test-monitored", "dir1")
        shutil.rmtree (victim)
        self.system.tracker_miner_fs_wait_for_idle ()

        result = self.__get_text_documents ()
        self.assertEquals (len (result), 1)
        unpacked_result = [ r[0] for r in result]
        self.assertIn ( uri ("test-monitored/file1.txt"), unpacked_result)

        # Restore the dirs
        #  Wait after each operation to be sure of the results
        os.makedirs (os.path.join (MINER_TMP_DIR, "test-monitored", "dir1"))
        self.system.tracker_miner_fs_wait_for_idle ()
        os.makedirs (os.path.join (MINER_TMP_DIR, "test-monitored", "dir1", "dir2"))
        self.system.tracker_miner_fs_wait_for_idle ()
        for f in ["test-monitored/dir1/file2.txt",
                  "test-monitored/dir1/dir2/file3.txt"]:
            filename = os.path.join (MINER_TMP_DIR, f)
            writer = open (filename, "w")
            writer.write ("Don't panic, everything is fine")
            writer.close ()
            self.system.tracker_miner_fs_wait_for_idle ()

        # Wait a bit more... some time one idle is not enough
        self.system.tracker_miner_fs_wait_for_idle (3)

        # Check everything is fine
        result = self.__get_text_documents ()
        self.assertEquals (len (result), 3)
    def test_reextraction(self):
        """Tests whether known files are still re-extracted on user request."""
        miner_fs = self.system.miner_fs
        store = self.system.store

        # Insert a valid file and wait extraction of its metadata.
        file_path = os.path.join(MINER_TMP_DIR, os.path.basename(VALID_FILE))
        shutil.copy(VALID_FILE, file_path)
        file_id, file_urn = store.await_resource_inserted(
            VALID_FILE_CLASS, title=VALID_FILE_TITLE)

        # Remove a key piece of metadata.
        store.update(
            'DELETE { <%s> nie:title ?title }'
            ' WHERE { <%s> nie:title ?title }' % (file_urn, file_urn))
        store.await_property_changed(file_id, 'nie:title')
        assert not store.ask('ASK { <%s> nie:title ?title }' % file_urn)

        log("Sending re-index request")
        # Request re-indexing (same as `tracker index --file ...`)
        miner_fs.index_file(uri(file_path))

        # The extractor should reindex the file and re-add the metadata that we
        # deleted, so we should see the nie:title property change.
        store.await_property_changed(file_id, 'nie:title')

        title_result = store.query('SELECT ?title { <%s> nie:title ?title }' % file_urn)
        assert len(title_result) == 1
        self.assertEqual(title_result[0][0], VALID_FILE_TITLE)
Пример #13
0
    def test_05_move_file_unmonitored_monitored (self):
        """
        Move file from unmonitored location to monitored location and index should be updated
        """

        TEXT = "airplane is beautiful"
        TEST_16_SOURCE = "test-no-monitored/fts-indexing-text-16.txt"
        TEST_16_DEST = "test-monitored/fts-indexing-text-16.txt"
        
        self.__recreate_file (path (TEST_16_SOURCE), TEXT)
        # the file is supposed to be ignored by tracker, so there is no notification..
        time.sleep (5)

        results = self.search_word ("airplane")
        self.assertEquals (len (results), 0)

        shutil.copyfile ( path (TEST_16_SOURCE), path (TEST_16_DEST))
        self.tracker.await_resource_inserted (rdf_class = 'nfo:Document',
                                              url = uri(TEST_16_DEST),
                                              required_property = 'nie:plainTextContent')

        results = self.search_word ("airplane")
        self.assertEquals (len (results), 1)

        os.remove ( path (TEST_16_SOURCE))
        os.remove ( path (TEST_16_DEST))
Пример #14
0
 def set_text (self, text):
     f = open (path (self.testfile), "w")
     f.write (text)
     f.close ()
     self.tracker.await_resource_inserted (rdf_class = 'nfo:Document',
                                           url = uri (self.testfile))
     self.tracker.reset_graph_updates_tracking ()
Пример #15
0
    def test_05_move_file_unmonitored_monitored (self):
        """
        Move file from unmonitored location to monitored location and index should be updated
        """

        # Maybe the miner hasn't finished yet with the setUp deletion!
        self.system.tracker_miner_fs_wait_for_idle ()
        
        TEXT = "airplane is beautiful"
        TEST_16_SOURCE = "test-no-monitored/fts-indexing-text-16.txt"
        TEST_16_DEST = "test-monitored/fts-indexing-text-16.txt"
        
        self.__recreate_file (path (TEST_16_SOURCE), TEXT)
        # the file is supposed to be ignored by tracker, so there is no notification..
        time.sleep (5)

        results = self.search_word ("airplane")
        self.assertEquals (len (results), 0)

        shutil.copyfile ( path (TEST_16_SOURCE), path (TEST_16_DEST))
        self.tracker.await_resource_inserted (rdf_class = 'nfo:Document',
                                              url = uri (TEST_16_DEST))

        results = self.search_word ("airplane")
        self.assertEquals (len (results), 1)

        os.remove ( path (TEST_16_SOURCE))
        os.remove ( path (TEST_16_DEST))
Пример #16
0
    def test_reextraction(self):
        """Tests whether known files are still re-extracted on user request."""
        miner_fs = self.system.miner_fs
        store = self.system.store

        # Insert a valid file and wait extraction of its metadata.
        file_path = os.path.join(MINER_TMP_DIR, os.path.basename(VALID_FILE))
        shutil.copy(VALID_FILE, file_path)
        file_id, file_urn = store.await_resource_inserted(
            VALID_FILE_CLASS, title=VALID_FILE_TITLE)

        # Remove a key piece of metadata.
        store.update('DELETE { <%s> nie:title ?title }'
                     ' WHERE { <%s> nie:title ?title }' % (file_urn, file_urn))
        store.await_property_changed(file_id, 'nie:title')
        assert not store.ask('ASK { <%s> nie:title ?title }' % file_urn)

        log("Sending re-index request")
        # Request re-indexing (same as `tracker index --file ...`)
        miner_fs.index_file(uri(file_path))

        # The extractor should reindex the file and re-add the metadata that we
        # deleted, so we should see the nie:title property change.
        store.await_property_changed(file_id, 'nie:title')

        title_result = store.query('SELECT ?title { <%s> nie:title ?title }' %
                                   file_urn)
        assert len(title_result) == 1
        self.assertEqual(title_result[0][0], VALID_FILE_TITLE)
Пример #17
0
 def setUp (self):
     self.tracker.reset_graph_updates_tracking ()
     self.testfile = "test-monitored/miner-fts-test.txt"
     if os.path.exists (path (self.testfile)):
         id = self._query_id (uri (self.testfile))
         os.remove (path (self.testfile))
         self.tracker.await_resource_deleted (id)
         self.tracker.reset_graph_updates_tracking ()
Пример #18
0
    def set_text (self, text):
        exists = os.path.exists(path(self.testfile))

        f = open (path (self.testfile), "w")
        f.write (text)
        f.close ()

        if exists:
            subject_id = self.tracker.get_resource_id(uri(self.testfile))
            self.tracker.await_property_changed(
                subject_id=subject_id, property_uri='nie:plainTextContent')
        else:
            self.tracker.await_resource_inserted(
                rdf_class='nfo:Document', url=uri(self.testfile),
                required_property='nie:plainTextContent')

        self.tracker.reset_graph_updates_tracking()
Пример #19
0
 def __get_file_urn(self, filepath):
     result = self.tracker.query("""
       SELECT ?u WHERE {
           ?u a nfo:FileDataObject ;
              nie:url \"%s\" .
       }
       """ % (uri(filepath)))
     self.assertEquals(len(result), 1)
     return result[0][0]
Пример #20
0
 def __get_parent_urn(self, filepath):
     result = self.tracker.query("""
       SELECT nfo:belongsToContainer(?u) WHERE {
           ?u a nfo:FileDataObject ;
              nie:url \"%s\" .
       }
       """ % (uri(filepath)))
     self.assertEquals(len(result), 1)
     return result[0][0]
Пример #21
0
    def create_test_file(self, file_name):
        file_path = path(file_name)

        file = open(file_path, 'w')
        file.write("Test")
        file.close()

        return self.tracker.await_resource_inserted(rdf_class='nfo:Document',
                                                    url=uri(file_name))
Пример #22
0
    def create_test_file (self, file_name):
        file_path = path(file_name)

        file = open (file_path, 'w')
        file.write ("Test")
        file.close ()

        return self.tracker.await_resource_inserted (rdf_class = 'nfo:Document',
                                                     url = uri(file_name))
Пример #23
0
 def __get_file_urn (self, filepath):
     result = self.tracker.query ("""
       SELECT ?u WHERE {
           ?u a nfo:FileDataObject ;
              nie:url \"%s\" .
       }
       """ % (uri (filepath)))
     self.assertEquals (len (result), 1)
     return result[0][0]
Пример #24
0
 def __get_parent_urn (self, filepath):
     result = self.tracker.query ("""
       SELECT nfo:belongsToContainer(?u) WHERE {
           ?u a nfo:FileDataObject ;
              nie:url \"%s\" .
       }
       """ % (uri (filepath)))
     self.assertEquals (len (result), 1)
     return result[0][0]
Пример #25
0
    def test_08_deletion_single_file (self):
        """
        Delete one of the files
        """
        victim = os.path.join (MINER_TMP_DIR, "test-monitored", "dir1", "file2.txt")
        os.remove (victim)
        self.system.tracker_miner_fs_wait_for_idle ()

        result = self.__get_text_documents ()
        self.assertEquals (len (result), 2)
        unpacked_result = [ r[0] for r in result]
        self.assertIn ( uri ("test-monitored/file1.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/dir2/file3.txt"), unpacked_result)

        # Restore the file
        f = open (victim, "w")
        f.write ("Don't panic, everything is fine")
        f.close ()
        self.system.tracker_miner_fs_wait_for_idle ()
Пример #26
0
    def test_06_move_from_monitored_to_unmonitored (self):
        """
        Move a file from monitored to unmonitored directory
        """
        source = os.path.join (MINER_TMP_DIR, "test-monitored", "dir1", "file2.txt")
        dest = os.path.join (MINER_TMP_DIR, "test-no-monitored", "file2.txt")
        shutil.move (source, dest)
        self.system.tracker_miner_fs_wait_for_idle ()

        result = self.__get_text_documents ()
        self.assertEquals (len (result), 2)
        unpacked_result = [ r[0] for r in result]
        self.assertIn ( uri ("test-monitored/file1.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/dir2/file3.txt"), unpacked_result)

        # Restore the file
        shutil.move (dest, source)
        self.system.tracker_miner_fs_wait_for_idle ()
        self.assertEquals (3, self.tracker.count_instances ("nfo:TextDocument"))
Пример #27
0
    def test_08_deletion_single_file (self):
        """
        Delete one of the files
        """
        victim = path("test-monitored/dir1/file2.txt")
        victim_id = self.system.store.get_resource_id (uri(victim))
        os.remove (victim)
        self.system.store.await_resource_deleted (victim_id)

        result = self.__get_text_documents ()
        self.assertEquals (len (result), 2)
        unpacked_result = [ r[0] for r in result]
        self.assertIn ( uri ("test-monitored/file1.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/dir2/file3.txt"), unpacked_result)

        # Restore the file
        f = open (victim, "w")
        f.write ("Don't panic, everything is fine")
        f.close ()
        self.system.store.await_resource_inserted ('nfo:TextDocument', uri(victim))
Пример #28
0
    def test_06_move_from_monitored_to_unmonitored (self):
        """
        Move a file from monitored to unmonitored directory
        """
        source = path("test-monitored/dir1/file2.txt")
        dest = path("test-no-monitored/file2.txt")
        source_id = self.system.store.get_resource_id (uri(source))
        shutil.move (source, dest)
        self.system.store.await_resource_deleted (source_id)

        result = self.__get_text_documents ()
        self.assertEquals (len (result), 2)
        unpacked_result = [ r[0] for r in result]
        self.assertIn ( uri ("test-monitored/file1.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/dir2/file3.txt"), unpacked_result)

        # Restore the file
        shutil.move (dest, source)
        self.system.store.await_resource_inserted ('nfo:TextDocument', uri(source))
        self.assertEquals (3, self.tracker.count_instances ("nfo:TextDocument"))
Пример #29
0
    def test_04_copy_from_monitored_to_monitored (self):
        """
        Copy a file between monitored directories
        """
        source = os.path.join (MINER_TMP_DIR, "test-monitored", "file1.txt")
        dest = os.path.join (MINER_TMP_DIR, "test-monitored", "dir1", "dir2", "file-test04.txt")
        shutil.copyfile (source, dest)
        self.system.tracker_miner_fs_wait_for_idle ()

        result = self.__get_text_documents ()
        self.assertEquals (len (result), 4)
        unpacked_result = [ r[0] for r in result]
        self.assertIn ( uri ("test-monitored/file1.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/file2.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/dir2/file3.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/dir2/file-test04.txt"), unpacked_result)

        # Clean the file
        os.remove (dest)
        self.system.tracker_miner_fs_wait_for_idle ()
        self.assertEquals (3, self.tracker.count_instances ("nfo:TextDocument"))
Пример #30
0
    def test_05_move_from_unmonitored_to_monitored (self):
        """
        Move a file from unmonitored to monitored directory
        """
        source = os.path.join (MINER_TMP_DIR, "test-no-monitored", "file0.txt")
        dest = os.path.join (MINER_TMP_DIR, "test-monitored", "dir1", "file-test05.txt")
        shutil.move (source, dest)
        dest_id, dest_urn = self.system.store.await_resource_inserted ('nfo:TextDocument', uri(dest))

        result = self.__get_text_documents ()
        self.assertEquals (len (result), 4)
        unpacked_result = [ r[0] for r in result]
        self.assertIn ( uri ("test-monitored/file1.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/file2.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/dir2/file3.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/file-test05.txt"), unpacked_result)

        # Clean the file
        os.remove (dest)
        self.system.store.await_resource_deleted (dest_id)
        self.assertEquals (3, self.tracker.count_instances ("nfo:TextDocument"))
Пример #31
0
    def basic_test (self, text, word):
        """
        Save the text on the testfile, search the word
        and assert the testfile is only result.

        Be careful with the default contents of the text files
        ( see common/utils/minertest.py DEFAULT_TEXT )
        """
        self.set_text (text)
        results = self.search_word (word)
        self.assertEquals (len (results), 1)
        self.assertIn ( uri (self.testfile), results)
Пример #32
0
    def basic_test (self, text, word):
        """
        Save the text on the testfile, search the word
        and assert the testfile is only result.

        Be careful with the default contents of the text files
        ( see common/utils/minertest.py DEFAULT_TEXT )
        """
        self.set_text (text)
        results = self.search_word (word)
        self.assertEquals (len (results), 1)
        self.assertIn ( uri (self.testfile), results)
Пример #33
0
    def test_07_move_from_monitored_to_monitored(self):
        """
        Move a file between monitored directories
        """

        source = path("test-monitored/dir1/file2.txt")
        dest = path("test-monitored/file2.txt")

        resource_id = self.tracker.get_resource_id(url=uri(source))

        source_dir_urn = self.__get_file_urn(os.path.dirname(source))
        parent_before = self.__get_parent_urn(source)
        self.assertEquals(source_dir_urn, parent_before)

        shutil.move(source, dest)
        self.tracker.await_property_changed(resource_id, 'nie:url')

        # Checking fix for NB#214413: After a move operation, nfo:belongsToContainer
        # should be changed to the new one
        dest_dir_urn = self.__get_file_urn(os.path.dirname(dest))
        parent_after = self.__get_parent_urn(dest)
        self.assertNotEquals(parent_before, parent_after)
        self.assertEquals(dest_dir_urn, parent_after)

        result = self.__get_text_documents()
        self.assertEquals(len(result), 3)
        unpacked_result = [r[0] for r in result]
        self.assertIn(uri("test-monitored/file1.txt"), unpacked_result)
        self.assertIn(uri("test-monitored/file2.txt"), unpacked_result)
        self.assertIn(uri("test-monitored/dir1/dir2/file3.txt"),
                      unpacked_result)

        # Restore the file
        shutil.move(dest, source)
        self.tracker.await_property_changed(resource_id, 'nie:url')

        result = self.__get_text_documents()
        self.assertEquals(len(result), 3)
        unpacked_result = [r[0] for r in result]
        self.assertIn(uri("test-monitored/dir1/file2.txt"), unpacked_result)
Пример #34
0
    def test_06_move_from_monitored_to_unmonitored(self):
        """
        Move a file from monitored to unmonitored directory
        """
        source = path("test-monitored/dir1/file2.txt")
        dest = path("test-no-monitored/file2.txt")
        source_id = self.system.store.get_resource_id(uri(source))
        shutil.move(source, dest)
        self.system.store.await_resource_deleted(source_id)

        result = self.__get_text_documents()
        self.assertEquals(len(result), 2)
        unpacked_result = [r[0] for r in result]
        self.assertIn(uri("test-monitored/file1.txt"), unpacked_result)
        self.assertIn(uri("test-monitored/dir1/dir2/file3.txt"),
                      unpacked_result)

        # Restore the file
        shutil.move(dest, source)
        self.system.store.await_resource_inserted('nfo:TextDocument',
                                                  uri(source))
        self.assertEquals(3, self.tracker.count_instances("nfo:TextDocument"))
Пример #35
0
    def test_08_deletion_single_file(self):
        """
        Delete one of the files
        """
        victim = path("test-monitored/dir1/file2.txt")
        victim_id = self.system.store.get_resource_id(uri(victim))
        os.remove(victim)
        self.system.store.await_resource_deleted(victim_id)

        result = self.__get_text_documents()
        self.assertEquals(len(result), 2)
        unpacked_result = [r[0] for r in result]
        self.assertIn(uri("test-monitored/file1.txt"), unpacked_result)
        self.assertIn(uri("test-monitored/dir1/dir2/file3.txt"),
                      unpacked_result)

        # Restore the file
        f = open(victim, "w")
        f.write("Don't panic, everything is fine")
        f.close()
        self.system.store.await_resource_inserted('nfo:TextDocument',
                                                  uri(victim))
Пример #36
0
    def test_03_copy_from_monitored_to_unmonitored (self):
        """
        Copy an file from a monitored location to an unmonitored location
        Nothing should change
        """

        # Copy from monitored to unmonitored
        source = os.path.join (MINER_TMP_DIR, "test-monitored", "file1.txt")
        dest = os.path.join (MINER_TMP_DIR, "test-no-monitored", "file1.txt")
        shutil.copyfile (source, dest)

        time.sleep (1)
        # Nothing changed
        result = self.__get_text_documents ()
        self.assertEquals (len (result), 3, "Results:" + str(result))
        unpacked_result = [ r[0] for r in result]
        self.assertIn ( uri ("test-monitored/file1.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/file2.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/dir2/file3.txt"), unpacked_result)

        # Clean the file
        os.remove (dest)
Пример #37
0
    def test_07_move_from_monitored_to_monitored (self):
        """
        Move a file between monitored directories
        """

        source = path("test-monitored/dir1/file2.txt")
        dest = path("test-monitored/file2.txt")

        resource_id = self.tracker.get_resource_id(url=uri(source))

        source_dir_urn = self.__get_file_urn (os.path.dirname(source))
        parent_before = self.__get_parent_urn (source)
        self.assertEquals (source_dir_urn, parent_before)

        shutil.move (source, dest)
        self.tracker.await_property_changed(resource_id, 'nie:url')

        # Checking fix for NB#214413: After a move operation, nfo:belongsToContainer
        # should be changed to the new one
        dest_dir_urn = self.__get_file_urn (os.path.dirname(dest))
        parent_after = self.__get_parent_urn (dest)
        self.assertNotEquals (parent_before, parent_after)
        self.assertEquals (dest_dir_urn, parent_after)

        result = self.__get_text_documents ()
        self.assertEquals (len (result), 3)
        unpacked_result = [ r[0] for r in result]
        self.assertIn ( uri ("test-monitored/file1.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/file2.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/dir2/file3.txt"), unpacked_result)

        # Restore the file
        shutil.move (dest, source)
        self.tracker.await_property_changed(resource_id, 'nie:url')

        result = self.__get_text_documents ()
        self.assertEquals (len (result), 3)
        unpacked_result = [ r[0] for r in result]
        self.assertIn ( uri ("test-monitored/dir1/file2.txt"), unpacked_result)
Пример #38
0
    def test_01_removal_of_file (self):
        """
        When removing the file, its text contents disappear from the index
        """
        TEXT = "automobile is red and big and whatnot"
        self.basic_test (TEXT, "automobile")

        id = self._query_id (uri (self.testfile))
        os.remove ( path (self.testfile))
        self.tracker.await_resource_deleted (id)

        results = self.search_word ("automobile")
        self.assertEquals (len (results), 0)
Пример #39
0
    def test_02_copy_from_unmonitored_to_monitored (self):
        """
        Copy an file from unmonitored directory to monitored directory
        and verify if data base is updated accordingly
        """
        source = os.path.join (MINER_TMP_DIR, "test-no-monitored", "file0.txt")
        dest = os.path.join (MINER_TMP_DIR, "test-monitored", "file0.txt")
        shutil.copyfile (source, dest)
        self.system.tracker_miner_fs_wait_for_idle ()

        # verify if miner indexed this file.
        result = self.__get_text_documents ()
        self.assertEquals (len (result), 4)
        unpacked_result = [ r[0] for r in result]
        self.assertIn ( uri ("test-monitored/file1.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/file2.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/dir2/file3.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/file0.txt"), unpacked_result)

        # Clean the new file so the test directory is as before
        log ("Remove and wait")
        os.remove (dest)
        self.system.tracker_miner_fs_wait_for_idle ()
Пример #40
0
    def test_03_copy_from_monitored_to_unmonitored(self):
        """
        Copy an file from a monitored location to an unmonitored location
        Nothing should change
        """

        # Copy from monitored to unmonitored
        source = os.path.join(MINER_TMP_DIR, "test-monitored", "file1.txt")
        dest = os.path.join(MINER_TMP_DIR, "test-no-monitored", "file1.txt")
        shutil.copyfile(source, dest)

        time.sleep(1)
        # Nothing changed
        result = self.__get_text_documents()
        self.assertEquals(len(result), 3, "Results:" + str(result))
        unpacked_result = [r[0] for r in result]
        self.assertIn(uri("test-monitored/file1.txt"), unpacked_result)
        self.assertIn(uri("test-monitored/dir1/file2.txt"), unpacked_result)
        self.assertIn(uri("test-monitored/dir1/dir2/file3.txt"),
                      unpacked_result)

        # Clean the file
        os.remove(dest)
Пример #41
0
    def test_07_move_from_monitored_to_monitored (self):
        """
        Move a file between monitored directories
        """
        source = os.path.join (MINER_TMP_DIR, "test-monitored", "dir1", "file2.txt")
        dest = os.path.join (MINER_TMP_DIR, "test-monitored", "file2.txt")

        source_dir_urn = self.__get_file_urn (os.path.join (MINER_TMP_DIR, "test-monitored", "dir1"))
        parent_before = self.__get_parent_urn (source)
        self.assertEquals (source_dir_urn, parent_before)

        shutil.move (source, dest)
        self.system.tracker_miner_fs_wait_for_idle ()

        # Checking fix for NB#214413: After a move operation, nfo:belongsToContainer
        # should be changed to the new one
        dest_dir_urn = self.__get_file_urn (os.path.join (MINER_TMP_DIR, "test-monitored"))
        parent_after = self.__get_parent_urn (dest)
        self.assertNotEquals (parent_before, parent_after)
        self.assertEquals (dest_dir_urn, parent_after)

        result = self.__get_text_documents ()
        self.assertEquals (len (result), 3)
        unpacked_result = [ r[0] for r in result]
        self.assertIn ( uri ("test-monitored/file1.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/file2.txt"), unpacked_result)
        self.assertIn ( uri ("test-monitored/dir1/dir2/file3.txt"), unpacked_result)

        # Restore the file
        shutil.move (dest, source)
        self.system.tracker_miner_fs_wait_for_idle ()

        result = self.__get_text_documents ()
        self.assertEquals (len (result), 3)
        unpacked_result = [ r[0] for r in result]
        self.assertIn ( uri ("test-monitored/dir1/file2.txt"), unpacked_result)