Skip to content

Commit

Permalink
fix: Do not track empty assignment events (#39)
Browse files Browse the repository at this point in the history
  • Loading branch information
tyiuhc authored Sep 19, 2023
1 parent 0951c1a commit e2fb39a
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 5 deletions.
2 changes: 2 additions & 0 deletions src/amplitude_experiment/assignment/assignment_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ def __init__(self, size: int, ttl_millis: int = DAY_MILLIS):
self.cache = Cache(size, ttl_millis)

def should_track(self, assignment: Assignment) -> bool:
if not assignment.results:
return False
canonical_assignment = assignment.canonicalize()
track = self.cache.get(canonical_assignment) is None
if track:
Expand Down
2 changes: 0 additions & 2 deletions src/amplitude_experiment/local/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,6 @@ def evaluate(self, user: User, flag_keys: List[str] = None) -> Dict[str, Variant
"""
variants = {}
if self.flags is None or len(self.flags) == 0:
if self.assignment_service:
self.assignment_service.track(Assignment(user, {}))
return variants
user_json = str(user)
self.logger.debug(f"[Experiment] Evaluate: User: {user_json} - Flags: {self.flags}")
Expand Down
4 changes: 2 additions & 2 deletions tests/local/assignment/assignment_filter_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ def test_empty_results(self):
assignment1 = Assignment(user1, {})
assignment2 = Assignment(user1, {})
assignment3 = Assignment(user2, {})
self.assertTrue(assignment_filter.should_track(assignment1))
self.assertFalse(assignment_filter.should_track(assignment1))
self.assertFalse(assignment_filter.should_track(assignment2))
self.assertTrue(assignment_filter.should_track(assignment3))
self.assertFalse(assignment_filter.should_track(assignment3))

def test_duplicate_assignments_with_different_ordering(self):
assignment_filter = AssignmentFilter(100)
Expand Down
5 changes: 4 additions & 1 deletion tests/local/assignment/assignment_service_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,8 @@ def test_tracking_called(self):
instance = Amplitude('')
instance.track = MagicMock()
service = AssignmentService(instance, AssignmentFilter(2))
service.track(Assignment(user, {}))
results = {}
result = FlagResult({'variant': {'key': 'on'}, 'isDefaultVariant': False})
results['flag-key-1'] = result
service.track(Assignment(user, results))
self.assertTrue(instance.track.called)

0 comments on commit e2fb39a

Please sign in to comment.