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)
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)
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)