예제 #1
0
    def setUp(self):
        """
        Starts a mock server for every test.
        """
        self.buf = []

        def save_to_buf(msg):
            self.buf.extend(
                [line.strip() for line in msg.split("\n") if line.strip()])

        self.server = Server(save_to_buf)
        gevent.spawn(self.server.serve)
        gevent.sleep(1)
예제 #2
0
    def requestDelete(cls, hddo, hash_base):

        print(
            '[App] Requesting deletion of HealthDominoDataObject with innerHash {}.'
            .format(hddo.innerHash))
        result = Server.deleteHDDO(hddo, hash_base)
        print('[App] All occurences of the HealthDominoDataObject is deleted.')
예제 #3
0
 def setUp(self):
     """
     Starts a mock server for every test.
     """
     self.buf = []
     def save_to_buf(msg):
         self.buf.extend([line.strip() for line in msg.split("\n") if line.strip()])
     self.server = Server(save_to_buf)
     gevent.spawn(self.server.serve)
     gevent.sleep(1)
예제 #4
0
    def registerUser(cls):

        if App.user_pha == '' and App.user_private_key == '' and App.user_public_key == '':
            print('[App] Registering user.')
            pha = sha256(urandom(16)).hexdigest()
            print(
                '[App] Please stroke the rabbit to help creating a key pair just for you. Thanks.'
            )
            key_pair = RSA.generate(2048)
            private_key = key_pair.exportKey()
            public_key = key_pair.publickey().exportKey()
            print('[App] The rabbit is happy. Keys generated sucessfully.')
            print('[App] Registering account...')
            while not Server.createAccountIfAvailable(pha, public_key):
                pha = sha256(urandom(16)).hexdigest()
            App.user_pha = pha
            App.user_private_key = private_key
            App.user_public_key = public_key
            print('[App] Your Personal Health Address is: {}'.format(
                App.user_pha))
            print(
                '      You don\'t have to remember it, this App will remember.'
            )
예제 #5
0
    def prepareTransmission(cls, inner_hash: str) -> str:

        print('[App] Preparing transmission of a HealthDominoDataObject...')
        return Server.reserveIfAvailable(inner_hash)
예제 #6
0
    def transmitHDDO(cls, hddo, transmission_id):

        print('[App] Transmitting HealthDominoDataObject...')
        return Server.acceptHDDO(hddo, transmission_id)
예제 #7
0
# RawData object and transmit them all to the server.

# To enabel broadcast compatibility, every HealthDominoDataObject will have a
# custom script based on the user's private key. This way of scripting is not
# secure at all but can demonstrate how broadcasts work.
sig_key = hash(App.user_private_key)
script_template = ['<SigKey>', '0', 'HD_ADD', '0']
hddo_container = []
for i in range(randrange(30, 40)):
    raw_datapoint = RawData('human_measure.weight.kg',
                            round(uniform(50.0, 70.0), 2))
    hddo_container.append(HealthDominoDataObject(raw_datapoint))
    script_result = sig_key + i
    this_script = deepcopy(script_template)
    this_script[1] = str(i)
    this_script[3] = str(script_result)
    hddo_container[-1].addScript(this_script)
    hddo_container[-1].close()
    hddo_container[-1].transmit()

# Since user applications usually doesn't initiate broadcasts let's connect the
# Server directly and initiate one. Before doing this let's choice a datapoint.
test_inner_hash = choice(list(Server.hddo_inner.keys()))

# With the innerHash we can initiate the broadcast.
test_script = Server.sendBroadcast(test_inner_hash)

# In this example we can easily find the concerned datapoint but in a real-world
# solution only the owner of the right signature key can accept the connection
# request.
예제 #8
0
class MetricsTest(unittest.TestCase):
    def wait_buf(self, num_entries, timeout=10):
        def wait_loop():
            while True:
                if len(self.buf) == num_entries:
                    return
                gevent.sleep(0.1)

        greenlet = gevent.spawn(wait_loop)
        greenlet.join(timeout)

        if len(self.buf) != num_entries:
            raise Exception("Expected buffer size %d, got %d" %
                            (num_entries, len(self.buf)))

    def setUp(self):
        """
        Starts a mock server for every test.
        """
        self.buf = []

        def save_to_buf(msg):
            self.buf.extend(
                [line.strip() for line in msg.split("\n") if line.strip()])

        self.server = Server(save_to_buf)
        gevent.spawn(self.server.serve)
        gevent.sleep(1)

    def tearDown(self):
        """
        Shuts down mock server.
        """
        self.server.stop()
        gevent.sleep(1)

    def test_add(self):
        logger.info("test_add")
        for x in xrange(10):
            Metric.add("test.add")
        self.wait_buf(lines_for_add(10))
        for line in self.buf:
            self.assertTrue(line.startswith("stats.test.add 1.0"))

    def test_timing(self):
        logger.info("test_timing")
        for x in xrange(10):
            timer = Metric.start_timing("test.timing")
            primes = get_prime_list(NUM_PRIMES)
            timer.done()
            logger.debug("Got %d primes", len(primes))
        self.wait_buf(lines_for_timing(10))
        for line in self.buf:
            self.assertTrue(line.startswith("stats.timers.test.timing"))

    def test_timing_exact(self):
        Metric.timing("exact.time", 1.337)
        self.wait_buf(lines_for_timing(1))
        stripped_timestamps = [
            " ".join(line.split(" ")[:-1]) for line in self.buf
        ]
        self.assertTrue(
            "stats.timers.exact.time.lower 1337.0" in stripped_timestamps)
        self.assertTrue(
            "stats.timers.exact.time.count 1" in stripped_timestamps)
        self.assertTrue(
            "stats.timers.exact.time.mean 1337.0" in stripped_timestamps)
        self.assertTrue(
            "stats.timers.exact.time.upper 1337.0" in stripped_timestamps)
        self.assertTrue(
            "stats.timers.exact.time.upper_100 1337.0" in stripped_timestamps)

    def test_add_decorator(self):
        logger.info("test_add_decorator")
        for x in xrange(10):
            primes = get_prime_list_with_add(NUM_PRIMES)
            logger.debug("Got %d primes", len(primes))
        self.wait_buf(lines_for_add(10))
        for line in self.buf:
            self.assertTrue(line.startswith("stats.test.add.decorator 1.0"))

    def test_timing_decorator(self):
        logger.info("test_timing_decorator")
        for x in xrange(0, 10):
            primes = get_prime_list_with_timing(NUM_PRIMES)
            logger.debug("Got %d primes", len(primes))
        self.wait_buf(lines_for_timing(10))
        for line in self.buf:
            self.assertTrue(
                line.startswith("stats.timers.test.timing.decorator"))

    def test_nested_decorators(self):
        logger.info("test_nested_decorators")
        for x in xrange(0, 10):
            primes = get_prime_list_with_add_and_timing(NUM_PRIMES)
            logger.debug("Got %d primes", len(primes))
        self.wait_buf(lines_for_add(10) + lines_for_timing(10))
        for line in self.buf:
            self.assertTrue(
                line.startswith("stats.test.add.decorator.combined 1.0") or
                line.startswith("stats.timers.test.timing.decorator.combined"))
예제 #9
0
#!/usr/bin/env python
# coding: utf-8

from mock_server import Server

if __name__ == '__main__':
    server = Server()
    server.start()
예제 #10
0
class MetricsTest(unittest.TestCase):

    def wait_buf(self, num_entries, timeout=10):
        def wait_loop():
            while True:
                if len(self.buf) == num_entries:
                    return
                gevent.sleep(0.1)

        greenlet = gevent.spawn(wait_loop)
        greenlet.join(timeout)

        if len(self.buf) != num_entries:
            raise Exception("Expected buffer size %d, got %d" % (num_entries, len(self.buf)))

    def setUp(self):
        """
        Starts a mock server for every test.
        """
        self.buf = []
        def save_to_buf(msg):
            self.buf.extend([line.strip() for line in msg.split("\n") if line.strip()])
        self.server = Server(save_to_buf)
        gevent.spawn(self.server.serve)
        gevent.sleep(1)

    def tearDown(self):
        """
        Shuts down mock server.
        """
        self.server.stop()
        gevent.sleep(1)

    def test_add(self):
        logger.info("test_add")
        for x in xrange(10):
            Metric.add("test.add")
        self.wait_buf(lines_for_add(10))
        for line in self.buf:
            self.assertTrue(line.startswith("stats.test.add 1.0"))

    def test_timing(self):
        logger.info("test_timing")
        for x in xrange(10):
            timer = Metric.start_timing("test.timing")
            primes = get_prime_list(NUM_PRIMES)
            timer.done()
            logger.debug("Got %d primes", len(primes))
        self.wait_buf(lines_for_timing(10))
        for line in self.buf:
            self.assertTrue(line.startswith("stats.timers.test.timing"))

    def test_timing_exact(self):
        Metric.timing("exact.time", 1.337)
        self.wait_buf(lines_for_timing(1))
        stripped_timestamps = [" ".join(line.split(" ")[:-1]) for line in self.buf]
        self.assertTrue("stats.timers.exact.time.lower 1337.0" in stripped_timestamps)
        self.assertTrue("stats.timers.exact.time.count 1" in stripped_timestamps)
        self.assertTrue("stats.timers.exact.time.mean 1337.0" in stripped_timestamps)
        self.assertTrue("stats.timers.exact.time.upper 1337.0" in stripped_timestamps)
        self.assertTrue("stats.timers.exact.time.upper_100 1337.0" in stripped_timestamps)

    def test_add_decorator(self):
        logger.info("test_add_decorator")
        for x in xrange(10):
            primes = get_prime_list_with_add(NUM_PRIMES)
            logger.debug("Got %d primes", len(primes))
        self.wait_buf(lines_for_add(10))
        for line in self.buf:
            self.assertTrue(line.startswith("stats.test.add.decorator 1.0"))

    def test_timing_decorator(self):
        logger.info("test_timing_decorator")
        for x in xrange(0, 10):
            primes = get_prime_list_with_timing(NUM_PRIMES)
            logger.debug("Got %d primes", len(primes))
        self.wait_buf(lines_for_timing(10))
        for line in self.buf:
            self.assertTrue(line.startswith("stats.timers.test.timing.decorator"))

    def test_nested_decorators(self):
        logger.info("test_nested_decorators")
        for x in xrange(0, 10):
            primes = get_prime_list_with_add_and_timing(NUM_PRIMES)
            logger.debug("Got %d primes", len(primes))
        self.wait_buf(lines_for_add(10) + lines_for_timing(10))
        for line in self.buf:
            self.assertTrue(line.startswith("stats.test.add.decorator.combined 1.0") or
                            line.startswith("stats.timers.test.timing.decorator.combined"))