Merge from OSM SO master
[osm/SO.git] / rwlaunchpad / plugins / rwpkgmgr / test / utest_publisher_dts.py
index 335638e..8e79889 100755 (executable)
@@ -36,6 +36,7 @@ from gi.repository import (
 import rift.tasklets.rwpkgmgr.downloader as downloader
 import rift.tasklets.rwpkgmgr.publisher as pkg_publisher
 import rift.test.dts
+from rift.mano.utils.project import ManoProject, DEFAULT_PROJECT
 
 
 class TestCase(rift.test.dts.AbstractDTSTest):
@@ -51,8 +52,10 @@ class TestCase(rift.test.dts.AbstractDTSTest):
         self.log.debug("STARTING - %s", test_id)
         self.tinfo = self.new_tinfo(str(test_id))
         self.dts = rift.tasklets.DTS(self.tinfo, self.schema, self.loop)
+        self.project = ManoProject(self.log, name=DEFAULT_PROJECT)
 
-        self.job_handler = pkg_publisher.DownloadStatusPublisher(self.log, self.dts, self.loop)
+        self.job_handler = pkg_publisher.DownloadStatusPublisher(self.log, self.dts,
+                                                                 self.loop, self.project)
 
     def tearDown(self):
         super().tearDown()
@@ -99,27 +102,27 @@ class TestCase(rift.test.dts.AbstractDTSTest):
                 "package_id": "123",
                 "download_id": str(uuid.uuid4())})
 
-        self.job_handler.on_download_progress(mock_msg)
+        yield from self.job_handler._dts_publisher(mock_msg)
         yield from asyncio.sleep(5, loop=self.loop)
 
-        itr = yield from self.dts.query_read("/download-jobs/job[download-id='{}']".format(
-            mock_msg.download_id))
+        xpath = self.project.add_project("/download-jobs/job[download-id='{}']".
+                                         format(mock_msg.download_id))
+        itr = yield from self.dts.query_read(xpath)
 
         result = None
         for fut in itr:
             result = yield from fut
             result = result.result
 
-        print (mock_msg)
+        self.log.debug("Mock msg: {}".format(mock_msg))
         assert result == mock_msg
 
         # Modify the msg
         mock_msg.url = "http://bar/foo"
-        self.job_handler.on_download_finished(mock_msg)
+        yield from self.job_handler._dts_publisher(mock_msg)
         yield from asyncio.sleep(5, loop=self.loop)
-        
-        itr = yield from self.dts.query_read("/download-jobs/job[download-id='{}']".format(
-            mock_msg.download_id))
+
+        itr = yield from self.dts.query_read(xpath)
 
         result = None
         for fut in itr:
@@ -138,17 +141,30 @@ class TestCase(rift.test.dts.AbstractDTSTest):
 
         proxy = mock.MagicMock()
 
-        url = "https://raw.githubusercontent.com/RIFTIO/RIFT.ware/master/rift-shell"
+        url = "http://boson.eng.riftio.com/common/unittests/plantuml.jar"
         url_downloader = downloader.PackageFileDownloader(url, "1", "/", "VNFD", proxy)
 
         download_id = yield from self.job_handler.register_downloader(url_downloader)
         assert download_id is not None
-        
-        yield from asyncio.sleep(5, loop=self.loop)
-        xpath = "/download-jobs/job[download-id='{}']".format(
-            download_id)
-        result = yield from self.read_xpath(xpath)
-        print (result)
+
+        # Waiting to be sure that the file is downloaded
+        # From BLR, it sometimes take longer for the file to
+        # be downloaded
+        max_time = 60
+        total_time = 0
+        while True:
+            yield from asyncio.sleep(5, loop=self.loop)
+            xpath = self.project.add_project("/download-jobs/job[download-id='{}']".
+                                             format(download_id))
+            result = yield from self.read_xpath(xpath)
+            self.log.debug("Test result before complete check - %s", result)
+            if result.status != "COMPLETED":
+                total_time = total_time + 5
+                if total_time <= max_time:
+                    continue
+            else:
+                break
+
         assert result.status == "COMPLETED"
         assert len(self.job_handler.tasks) == 0
 
@@ -163,25 +179,27 @@ class TestCase(rift.test.dts.AbstractDTSTest):
         yield from self.job_handler.register()
 
         proxy = mock.MagicMock()
-        url = "http://mirror.0x.sg/fedora/linux/releases/24/CloudImages/x86_64/images/Fedora-Cloud-Base-24-1.2.x86_64.qcow2"
+        url = "http://boson.eng.riftio.com/common/unittests/Fedora-x86_64-20-20131211.1-sda-ping.qcow2"
         url_downloader = downloader.PackageFileDownloader(url, "1", "/", "VNFD", proxy)
 
         download_id = yield from self.job_handler.register_downloader(url_downloader)
         assert download_id is not None
-        xpath = "/download-jobs/job[download-id='{}']".format(
-            download_id)
+        xpath = self.project.add_project("/download-jobs/job[download-id='{}']".
+                                         format(download_id))
 
-        yield from asyncio.sleep(3, loop=self.loop)
+        yield from asyncio.sleep(10, loop=self.loop)
 
         result = yield from self.read_xpath(xpath)
+        self.log.debug("Test result before in_progress check - %s", result)
         assert result.status == "IN_PROGRESS"
 
         yield from self.job_handler.cancel_download(download_id)
         yield from asyncio.sleep(3, loop=self.loop)
         result = yield from self.read_xpath(xpath)
+        self.log.debug("Test result before cancel check - %s", result)
         assert result.status == "CANCELLED"
         assert len(self.job_handler.tasks) == 0
-    
+
 
 def main():
     runner = xmlrunner.XMLTestRunner(output=os.environ["RIFT_MODULE_TEST"])