Example #1
0
    def test_inactive_matching_experiment_is_not_returned(self):
        Experiment.objects.all().delete()
        e1 = Experiment(name = 'e1', file = 'file4.txt', filters = {'a': 'b'}, active=False)
        e1.save()

        matches = Experiment.get_active_experiments_matching({'a': 'b'})
        eq_(len(matches), 0)
Example #2
0
    def test_get_active_experiments_matching(self):
        Experiment.objects.all().delete()

        e1 = Experiment(name = 'e1', file = 'file3.txt', filters = {'a': 'b'})
        e1.save()
        e2 = Experiment(name = 'e2', file = 'file3.txt', filters = {'c': 'd'})
        e2.save()

        matches = Experiment.get_active_experiments_matching({'a': 'b', 'c': 'd'})
        ok_(set(matches), set([e1, e2]))

        matches = Experiment.get_active_experiments_matching({'a': 'b'})
        ok_(set(matches), set([e1]))

        matches = Experiment.get_active_experiments_matching({'c': 'd'})
        ok_(set(matches), set([e2]))

        matches = Experiment.get_active_experiments_matching({'e': 'f'})
        eq_(len(matches), 0)
Example #3
0
    def process_message(self, message):
        # Purge open files once in a while
        current_time = time.time()
        if current_time - self._last_files_purge >= self.FILES_PURGE_THRESHOLD:
            self.purge_files()

        # Get active experiments matching this message
        experiments = Experiment.get_active_experiments_matching(message)
        experiment_ids = [str(e.id) for e in experiments]
        if len(experiment_ids) > 0:
            self.logger.info("Measurement %r matches experiments %r" %\
                             (json_dumps(message), experiment_ids))

        # Write the measurement to each experiment file
        for e in experiments:
            efile = self.get_file_for_experiment(e)
            efile.put(message)
            self.logger.info("Written measurement to file %s" % e.file)