Exemplo n.º 1
0
class DownloadThread(threading.Thread):
    def __init__(self, log_queue, db_filename, address):
        super(DownloadThread, self).__init__()
        self.log_queue = log_queue
        self.db_filename = db_filename
        self.address = address
        self.data = None
        self.error = None
        self.logger = logging.getLogger('collage_proxy')

    def run(self):
        self.driver = WebDriver()

        self.logger.info('Starting download thread')

        database = Database(self.db_filename)
        task_list = database.get_active_task_list()
        modules = database.get_loaded_task_modules(task_list)
        snippets = database.get_tasks(task_list)

        def dummy_receive(self, id):
            print 'Task module not loaded'
        def dummy_can_embed(self, id, data):
            return False
        def get_task_from_snippet(snippet):
            task = snippet.execute(self.driver)
            if snippet.get_module() not in modules:
                task.receive = dummy_receive
                task.can_embed = dummy_can_embed
            return task

        tasks = map(get_task_from_snippet, snippets)

        vector_provider = NullVectorProvider()
        message_layer = MessageLayer(vector_provider,
                                     common.BLOCK_SIZE,
                                     common.MAX_UNIQUE_BLOCKS,
                                     tasks,
                                     common.TASKS_PER_MESSAGE,
                                     Logger(self.log_queue),
                                     mac=True)
        try:
            self.logger.info('Download thread fetching address "%s"' % self.address)
            self.data = message_layer.receive(self.address)
        except Exception as inst:
            self.logger.info('Download thread had error "%s"' % inst.message)
            self.error = inst

        self.driver.close()

    def get_data(self):
        return self.data

    def get_error(self):
        return self.error

    def close(self):
        self.driver.close()
Exemplo n.º 2
0
class HomePageTest(TestCase):

    def _load_home_page(self):
        self.driver.get("http://127.0.0.1:8000/charts")
        
    def test_get_title(self):
        self.driver = WebDriver()
        self._load_home_page()
        title = self.driver.get_title()
        self.assertEquals("foobar", title)

    def tearDown(self):
        self.driver.quit()
Exemplo n.º 3
0
class TestStaticPagesWithJs(unittest.TestCase):
    def setUp(self):
        self.server = Popen("dev_appserver.py . --port=80", shell=True)
        self.browser = WebDriver()

    def tearDown(self):
        self.browser.quit()
        # same as in python2.6 subprocess for posix systems (so currently no windows support)
        os.kill(self.server.pid, signal.SIGTERM)

    def test_index_with_js(self):
        self.browser.get('http://localhost')
        assert 'Welcome to Flask-Gae-Skeleton!' in self.browser.get_page_source(
        )
class TestStaticPagesWithJs(unittest.TestCase):

    def setUp(self):
        self.server = Popen("dev_appserver.py . --port=80", shell=True)
        self.browser = WebDriver()

    def tearDown(self):
        self.browser.quit()
        # same as in python2.6 subprocess for posix systems (so currently no windows support)
        os.kill(self.server.pid, signal.SIGTERM)

    def test_landing_index_with_js(self):
        self.browser.get('http://localhost')
        assert 'Welcome to Flask-Gae-Skeleton!' in self.browser.get_page_source()
Exemplo n.º 5
0
class ExampleTest2(unittest.TestCase):
    """This example shows how to use the page object pattern.
    
    For more information about this pattern, see:
    http://code.google.com/p/webdriver/wiki/PageObjects
    """
    def setUp(self):
        self._driver = WebDriver()

    def tearDown(self):
        self._driver.quit()

    def testSearch(self):
        google = GoogleOneBox(self._driver, "http://www.google.com")
        res = google.search_for("cheese")
        self.assertTrue(res.link_contains_match_for("Wikipedia"))
Exemplo n.º 6
0
class ExampleTest2(unittest.TestCase):
    """This example shows how to use the page object pattern.
    
    For more information about this pattern, see:
    http://code.google.com/p/webdriver/wiki/PageObjects
    """
    
    def setUp(self):
        self._driver = WebDriver()

    def tearDown(self):
        self._driver.quit()

    def testSearch(self):
        google = GoogleOneBox(self._driver, "http://www.google.com")
        res = google.search_for("cheese")
        self.assertTrue(res.link_contains_match_for("Wikipedia"))
Exemplo n.º 7
0
def download(address, snippets):
    driver = WebDriver()

    tasks = []
    for snippet in snippets:
        tasks.append(snippet.execute(driver))

    vector_provider = NullVectorProvider()
    message_layer = MessageLayer(vector_provider,
                                 common.BLOCK_SIZE,
                                 common.MAX_UNIQUE_BLOCKS,
                                 tasks,
                                 common.TASKS_PER_MESSAGE,
                                 Timestamper(),
                                 mac=True)
    try:
        data = message_layer.receive(address)
    except MessageLayerError:
        pass

    driver.close()

    return data
Exemplo n.º 8
0
class FirefoxLauncherTests(unittest.TestCase):
    def testLaunchAndCloseBrowser(self):
        self.webdriver = WebDriver()
        self.webdriver.quit()

    def testDoubleClose(self):
        self.webdriver = WebDriver()
        self.webdriver.close()
        self.webdriver.close()
        self.webdriver.quit()
Exemplo n.º 9
0
class FirefoxLauncherTests (unittest.TestCase):

    def testLaunchAndCloseBrowser(self):
         self.webdriver = WebDriver()
         self.webdriver.quit()

    def testDoubleClose(self):
        self.webdriver = WebDriver()
        self.webdriver.close()
        self.webdriver.close()
        self.webdriver.quit()
Exemplo n.º 10
0
def main():
    usage = 'usage: %s [options] <send|receive|delete> <id>'
    parser = OptionParser(usage=usage)
    parser.set_defaults()
    parser.add_option('-t', '--tags-file',
                      dest='tagsfile', action='store', type='string',
                      help='File to read tags from')
    (options, args) = parser.parse_args()

    if len(args) != 2:
        parser.error('Need to specify action and message id')

    if options.tagsfile is None:
        parser.error('Need to specify tags file')

    block_size = 8
    max_unique_blocks = 2**16
    tasks_per_message = 3

    if args[0] == 'send':
        parser.error('Send action not implemented. Use photo donation tool.')
    elif args[0] == 'receive':
        driver = WebDriver()

        tags = []
        for line in open(options.tagsfile, 'r'):
            tags.append(line.strip())
        tag_pairs = [(a, b) for a in tags for b in tags if a < b]
        tasks = map(lambda pair: WebTagPairFlickrTask(driver, pair), tag_pairs)

        vector_provider = NullVectorProvider()
        message_layer = MessageLayer(vector_provider,
                                     block_size,
                                     max_unique_blocks,
                                     tasks,
                                     tasks_per_message,
                                     timestamper)
        data = message_layer.receive(args[1])
        sys.stdout.write(data)
    elif args[0] == 'delete':
        parser.error("Delete action not implemented. You probably don't own the photos anyway.")
    else:
        parser.error('Invalid action')
Exemplo n.º 11
0
 def testLaunchAndCloseBrowser(self):
      self.webdriver = WebDriver()
      self.webdriver.quit()
Exemplo n.º 12
0
 def setUp(self):
     self._driver = WebDriver()
Exemplo n.º 13
0
 def test_get_title(self):
     self.driver = WebDriver()
     self._load_home_page()
     title = self.driver.get_title()
     self.assertEquals("foobar", title)
Exemplo n.º 14
0
def main():
    usage = 'usage: %s [options] <send|recieve> <id>'
    parser = OptionParser(usage=usage)
    parser.add_option('-u',
                      '--username',
                      dest='username',
                      action='store',
                      type='string',
                      help='Twitter username')
    parser.add_option('-p',
                      '--password',
                      dest='password',
                      action='store',
                      type='string',
                      help='Twitter password')
    parser.add_option('-f',
                      '--file',
                      dest='filename',
                      action='store',
                      type='string',
                      help='File to send')
    parser.add_option('-n',
                      '--num-tweets',
                      dest='num_vectors',
                      action='store',
                      type='int',
                      help='Number of tweets to send')
    parser.add_option('-r',
                      '--send-ratio',
                      dest='send_ratio',
                      action='store',
                      type='float',
                      help='Ratio between data to send and total data length')
    parser.add_option('-d',
                      '--directory',
                      dest='directory',
                      action='store',
                      type='string',
                      help='Directory to read tweets from')
    (options, args) = parser.parse_args()

    if len(args) != 2:
        parser.error('Need to specify action and message id')

    block_size = 8
    max_unique_blocks = 2**8
    tasks_per_message = 3

    if args[0] == 'send':
        if options.username is None or options.password is None:
            parser.error(
                'Must specify Twitter username and password to send messages.')
        if options.directory is None:
            parser.error(
                'Must specify a directory with tweets (*.tweet) in it, to embed and upload.'
            )

        vector_provider = DirectoryVectorProvider(BlatantVector,
                                                  options.directory, '.tweet')

        if options.filename is None:
            print 'Enter message and press <Ctrl-D>'
            data = sys.stdin.read()
        else:
            data = open(options.filename, 'r').read()

        driver = WebDriver()
        twitter_login(driver, options.username, options.password)

        tasks = [WebTwitterTask(driver, options.username, BlatantVector)]
        message_layer = MessageLayer(vector_provider, block_size,
                                     max_unique_blocks, tasks,
                                     tasks_per_message, timestamper)
        if options.num_vectors is not None:
            message_layer.send(args[1], data, num_vectors=options.num_vectors)
        elif options.send_ratio is not None:
            message_layer.send(args[1], data, send_ratio=options.send_ratio)
        else:
            message_layer.send(args[1], data)
    elif args[0] == 'receive':
        if options.username is None:
            parser.error('Must specify username to search')

        vector_provider = NullVectorProvider()

        driver = WebDriver()
        tasks = [WebTwitterTask(driver, options.username, BlatantVector)]
        message_layer = MessageLayer(vector_provider, block_size,
                                     max_unique_blocks, tasks,
                                     tasks_per_message, timestamper)
        data = message_layer.receive(args[1])
        sys.stdout.write(data)
    elif args[0] == 'delete':
        parser.error(
            "Deletion not supported through Web interface yet. Use direct client."
        )
    else:
        parser.error('Invalid action')
Exemplo n.º 15
0
 def testLaunchAndCloseBrowser(self):
     self.webdriver = WebDriver()
     self.webdriver.quit()
Exemplo n.º 16
0
 def setUp(self):
     self._driver = WebDriver()
Exemplo n.º 17
0
 def setUp(self):
     self.server = Popen("dev_appserver.py . --port=80", shell=True)
     self.browser = WebDriver()
Exemplo n.º 18
0
 def testNamedProfile(self):
     profile = FirefoxProfile("example")
     driver = WebDriver(profile)
     driver.get("http://localhost:%d/simpleTest.html" % WEB_SERVER_PORT)
     self.assertEquals("Hello WebDriver", driver.get_title())
     driver.quit()
Exemplo n.º 19
0
 def testAnonymousProfileExample(self):
     driver = WebDriver()
     driver.get("http://localhost:%d/simpleTest.html" % WEB_SERVER_PORT)
     self.assertEquals("Hello WebDriver", driver.get_title())
     driver.quit()
Exemplo n.º 20
0
 def testDoubleClose(self):
     self.webdriver = WebDriver()
     self.webdriver.close()
     self.webdriver.close()
     self.webdriver.quit()
Exemplo n.º 21
0
 def testDoubleClose(self):
     self.webdriver = WebDriver()
     self.webdriver.close()
     self.webdriver.close()
     self.webdriver.quit()
Exemplo n.º 22
0
 def testAnonymousProfileIsFresh(self):
     driver = WebDriver()
     driver.get("http://localhost:%d/simpleTest.html" % WEB_SERVER_PORT)
     timestamp = time.mktime(datetime.datetime.now().timetuple()) + 100
     cookie = {
         "name": "foo",
         "value": "bar",
         "expires": str(int(timestamp)) + "000",
         "domain": "localhost",
         "path": "/"
     }
     driver.add_cookie(utils.convert_cookie_to_json(cookie))
     self.assertEquals(cookie, driver.get_cookies()[0])
     driver.quit()
     driver = WebDriver()
     self.assertEquals([], driver.get_cookies())
     driver.quit()
Exemplo n.º 23
0
 def testAnonymousProfileIsFresh(self):
     driver = WebDriver()
     driver.get("http://localhost:%d/simpleTest.html" % WEB_SERVER_PORT)
     timestamp = time.mktime(datetime.datetime.now().timetuple()) + 100
     cookie = {"name": "foo",
              "value": "bar",
               "expires": str(int(timestamp)) + "000",
              "domain": "localhost",
              "path": "/"}
     driver.add_cookie(utils.convert_cookie_to_json(cookie))
     self.assertEquals(cookie, driver.get_cookies()[0])
     driver.quit()
     driver = WebDriver()
     self.assertEquals([], driver.get_cookies())
     driver.quit()
Exemplo n.º 24
0
def setup_module(module):
    webserver = SimpleWebServer()
    webserver.start()
    FirefoxCookieTest.webserver = webserver
    FirefoxCookieTest.driver = WebDriver()
Exemplo n.º 25
0
 def testAnonymousProfileExample(self):
     driver = WebDriver()
     driver.get("http://localhost:%d/simpleTest.html" % WEB_SERVER_PORT)
     self.assertEquals("Hello WebDriver", driver.get_title())
     driver.quit()
Exemplo n.º 26
0
 def setUp(self):
     self.server = Popen("dev_appserver.py . --port=80", shell=True)
     self.browser = WebDriver()
Exemplo n.º 27
0
 def testNamedProfile(self):
     profile = FirefoxProfile("example")
     driver = WebDriver(profile)
     driver.get("http://localhost:%d/simpleTest.html" % WEB_SERVER_PORT)
     self.assertEquals("Hello WebDriver", driver.get_title())
     driver.quit()