File: TestGalaxyInstance.py

package info (click to toggle)
python-bioblend 1.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,096 kB
  • sloc: python: 7,596; sh: 219; makefile: 158
file content (60 lines) | stat: -rw-r--r-- 2,108 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
"""
Tests on the GalaxyInstance object itself.
"""
import os
import time
import unittest

import pytest

from bioblend import ConnectionError
from bioblend.galaxy import GalaxyInstance
from . import test_util


class TestGalaxyInstance(unittest.TestCase):
    def setUp(self):
        # "connect" to a fake Galaxy instance
        self.gi = GalaxyInstance("http://localhost:56789", key="whatever")

    def test_url_attribute(self):
        assert self.gi.base_url == "http://localhost:56789"
        assert self.gi.url == "http://localhost:56789/api"
        # Test instance served at a subdirectory
        gi = GalaxyInstance("http://localhost:56789/galaxy/", key="whatever")
        assert gi.base_url == "http://localhost:56789/galaxy"
        assert gi.url == "http://localhost:56789/galaxy/api"

    def test_set_max_get_attempts(self):
        self.gi.max_get_attempts = 3
        assert 3 == self.gi.max_get_attempts

    def test_set_retry_delay(self):
        self.gi.get_retry_delay = 5.0
        assert 5.0 == self.gi.get_retry_delay

    def test_get_retry(self):
        # We set the client to try twice, with a delay of 5 seconds between
        # attempts. So, we expect the call to take at least 5 seconds before
        # failing.
        self.gi.max_get_attempts = 3
        self.gi.get_retry_delay = 2
        start = time.time()
        with pytest.raises(ConnectionError):
            self.gi.libraries.get_libraries()
        end = time.time()
        duration = end - start
        assert duration > self.gi.get_retry_delay * (self.gi.max_get_attempts - 1), "Didn't seem to retry long enough"

    def test_missing_scheme_fake_url(self):
        with pytest.raises(ValueError):
            GalaxyInstance("localhost:56789", key="whatever")

    @test_util.skip_unless_galaxy()
    def test_missing_scheme_real_url(self):
        galaxy_url = os.environ["BIOBLEND_GALAXY_URL"]
        # Strip the scheme from galaxy_url
        scheme_sep = "://"
        if scheme_sep in galaxy_url:
            galaxy_url = galaxy_url.partition(scheme_sep)[2]
        GalaxyInstance(url=galaxy_url)