Exemple #1
0
    def test_event_filter_matching_with_no_session_id(self):
        Person.objects.create(team=self.team,
                              distinct_ids=["user"],
                              properties={"email": "bla"})
        self.create_snapshot("user", "1", self.base_time, window_id="1")
        self.create_event("user", self.base_time)
        self.create_snapshot("user",
                             "1",
                             self.base_time + relativedelta(seconds=30),
                             window_id="1")
        self.create_event("user",
                          self.base_time + relativedelta(seconds=31),
                          event_name="$autocapture")

        # Pageview within timestamps matches recording
        filter = SessionRecordingsFilter(
            team=self.team,
            data={
                "events": [{
                    "id": "$pageview",
                    "type": "events",
                    "order": 0,
                    "name": "$pageview"
                }]
            },
        )
        session_recording_list_instance = ClickhouseSessionRecordingList(
            filter=filter, team_id=self.team.pk)
        (session_recordings, _) = session_recording_list_instance.run()
        self.assertEqual(len(session_recordings), 1)
        self.assertEqual(session_recordings[0]["session_id"], "1")

        # Pageview outside timestamps does not match recording
        filter = SessionRecordingsFilter(
            team=self.team,
            data={
                "events": [{
                    "id": "$autocapture",
                    "type": "events",
                    "order": 0,
                    "name": "$autocapture"
                }]
            },
        )
        session_recording_list_instance = ClickhouseSessionRecordingList(
            filter=filter, team_id=self.team.pk)
        (session_recordings, _) = session_recording_list_instance.run()
        self.assertEqual(len(session_recordings), 0)
Exemple #2
0
 def test_event_filter_with_person_properties(self):
     Person.objects.create(team=self.team,
                           distinct_ids=["user"],
                           properties={"email": "bla"})
     Person.objects.create(team=self.team,
                           distinct_ids=["user2"],
                           properties={"email": "bla2"})
     self.create_snapshot("user", "1", self.base_time)
     self.create_event("user", self.base_time)
     self.create_snapshot("user", "1",
                          self.base_time + relativedelta(seconds=30))
     self.create_snapshot("user2", "2", self.base_time)
     self.create_event("user2", self.base_time)
     self.create_snapshot("user2", "2",
                          self.base_time + relativedelta(seconds=30))
     filter = SessionRecordingsFilter(
         team=self.team,
         data={
             "properties": [{
                 "key": "email",
                 "value": ["bla"],
                 "operator": "exact",
                 "type": "person"
             }],
         },
     )
     session_recording_list_instance = ClickhouseSessionRecordingList(
         filter=filter, team_id=self.team.pk)
     (session_recordings, _) = session_recording_list_instance.run()
     self.assertEqual(len(session_recordings), 1)
     self.assertEqual(session_recordings[0]["session_id"], "1")
Exemple #3
0
    def track_session_recordings_list(self):
        filter = SessionRecordingsFilter(
            data=SESSIONS_DATE_RANGE,
            team=self.team,
        )

        ClickhouseSessionRecordingList(filter, self.team.pk).run()
Exemple #4
0
    def track_session_recordings_list_event_filter(self):
        filter = SessionRecordingsFilter(
            data={
                "events": [{
                    "id": "$pageview"
                }],
                **SESSIONS_DATE_RANGE
            },
            team=self.team,
        )

        ClickhouseSessionRecordingList(filter, self.team.pk).run()
Exemple #5
0
    def test_event_filter_with_cohort_properties(self):
        with self.settings(USE_PRECALCULATED_CH_COHORT_PEOPLE=True):
            with freeze_time("2021-08-21T20:00:00.000Z"):
                Person.objects.create(team=self.team,
                                      distinct_ids=["user"],
                                      properties={"email": "bla"})
                Person.objects.create(team=self.team,
                                      distinct_ids=["user2"],
                                      properties={
                                          "email": "bla2",
                                          "$some_prop": "some_val"
                                      })
                cohort = Cohort.objects.create(team=self.team,
                                               name="cohort1",
                                               groups=[{
                                                   "properties": {
                                                       "$some_prop": "some_val"
                                                   }
                                               }])
                cohort.calculate_people_ch(pending_version=0)

                self.create_snapshot("user", "1", self.base_time)
                self.create_event("user", self.base_time, team=self.team)
                self.create_snapshot(
                    "user", "1", self.base_time + relativedelta(seconds=30))
                self.create_snapshot("user2", "2", self.base_time)
                self.create_event("user2", self.base_time, team=self.team)
                self.create_snapshot(
                    "user2", "2", self.base_time + relativedelta(seconds=30))
                filter = SessionRecordingsFilter(
                    team=self.team,
                    data={
                        "properties": [{
                            "key": "id",
                            "value": cohort.pk,
                            "operator": None,
                            "type": "cohort"
                        }],
                    },
                )
                session_recording_list_instance = ClickhouseSessionRecordingList(
                    filter=filter, team_id=self.team.pk)
                (session_recordings, _) = session_recording_list_instance.run()
                self.assertEqual(len(session_recordings), 1)
                self.assertEqual(session_recordings[0]["session_id"], "2")
Exemple #6
0
    def track_session_recordings_list_person_property_filter(self):
        filter = SessionRecordingsFilter(
            data={
                "events": [{
                    "id":
                    "$pageview",
                    "properties": [{
                        "key": "email",
                        "operator": "icontains",
                        "value": ".com",
                        "type": "person"
                    }],
                }],
                **SESSIONS_DATE_RANGE,
            },
            team=self.team,
        )

        ClickhouseSessionRecordingList(filter, self.team.pk).run()
Exemple #7
0
 def _get_session_recording_list(self, filter):
     return ClickhouseSessionRecordingList(filter=filter,
                                           team=self.team).run()