From 9036d2d6a866cd59ec19600396394f93e8e8fc78 Mon Sep 17 00:00:00 2001 From: Mark Haines Date: Mon, 21 Dec 2015 17:15:05 +0000 Subject: Use an absolute path when specifying the directory for synapse in jenkins.sh --- jenkins.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'jenkins.sh') diff --git a/jenkins.sh b/jenkins.sh index 7075b1a51a..66c1614299 100755 --- a/jenkins.sh +++ b/jenkins.sh @@ -22,9 +22,7 @@ tox : ${GIT_BRANCH:="origin/$(git rev-parse --abbrev-ref HEAD)"} -set +u -. .tox/py27/bin/activate -set -u +TOX_BIN=$WORKSPACE/.tox/py27/bin if [[ ! -e .sytest-base ]]; then git clone https://github.com/matrix-org/sytest.git .sytest-base --mirror @@ -48,7 +46,8 @@ export PERL5LIB PERL_MB_OPT PERL_MM_OPT : ${PORT_BASE:=8000} echo >&2 "Running sytest with SQLite3"; -./run-tests.pl --coverage -O tap --synapse-directory .. --all --port-base $PORT_BASE > results-sqlite3.tap +./run-tests.pl --coverage -O tap --synapse-directory $WORKSPACE \ + --python $TOX_BIN/python --all --port-base $PORT_BASE > results-sqlite3.tap RUN_POSTGRES="" @@ -66,8 +65,9 @@ done # Run if both postgresql databases exist if test $RUN_POSTGRES = ":$(($PORT_BASE + 1)):$(($PORT_BASE + 2))"; then echo >&2 "Running sytest with PostgreSQL"; - pip install psycopg2 - ./run-tests.pl --coverage -O tap --synapse-directory .. --all --port-base $PORT_BASE > results-postgresql.tap + $TOX_BIN/pip install psycopg2 + ./run-tests.pl --coverage -O tap --synapse-directory $WORKSPACE \ + --python $TOX_BIN/python --all --port-base $PORT_BASE > results-postgresql.tap else echo >&2 "Skipping running sytest with PostgreSQL, $RUN_POSTGRES" fi @@ -76,6 +76,6 @@ cd .. cp sytest/.coverage.* . # Combine the coverage reports -python -m coverage combine +$TOX_BIN/python -m coverage combine # Output coverage to coverage.xml -coverage xml -o coverage.xml +$TOX_BIN/coverage xml -o coverage.xml -- cgit 1.4.1 From bb9c7f2dd9d1b262e06d47577597649af9706660 Mon Sep 17 00:00:00 2001 From: Mark Haines Date: Mon, 21 Dec 2015 17:51:57 +0000 Subject: Delete all the .coverage files, including the combined .coverage --- jenkins.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'jenkins.sh') diff --git a/jenkins.sh b/jenkins.sh index 66c1614299..bb0ae361af 100755 --- a/jenkins.sh +++ b/jenkins.sh @@ -16,7 +16,7 @@ export DUMP_COVERAGE_COMMAND="coverage help" # UNSTABLE or FAILURE this build. export PEP8SUFFIX="--output-file=violations.flake8.log || echo flake8 finished with status code \$?" -rm .coverage.* || echo "No files to remove" +rm .coverage* || echo "No coverage files to remove" tox @@ -76,6 +76,7 @@ cd .. cp sytest/.coverage.* . # Combine the coverage reports +echo "Combining:" .coverage.* $TOX_BIN/python -m coverage combine # Output coverage to coverage.xml $TOX_BIN/coverage xml -o coverage.xml -- cgit 1.4.1 From b9b4466d0d50dd4a0b9e6ab7608f7e04d708ba3c Mon Sep 17 00:00:00 2001 From: Mark Haines Date: Tue, 22 Dec 2015 11:40:32 +0000 Subject: Add top level filters for filtering by room id Documented by matrix-org/matrix-doc#246 --- jenkins.sh | 1 - synapse/api/filtering.py | 68 +++++++++++++++++++++++++----------------------- 2 files changed, 35 insertions(+), 34 deletions(-) (limited to 'jenkins.sh') diff --git a/jenkins.sh b/jenkins.sh index bb0ae361af..e2bb706c7f 100755 --- a/jenkins.sh +++ b/jenkins.sh @@ -6,7 +6,6 @@ export PYTHONDONTWRITEBYTECODE=yep export TRIAL_FLAGS="--reporter=subunit" export TOXSUFFIX="| subunit-1to2 | subunit2junitxml --no-passthrough --output-to=results.xml" # Write coverage reports to a separate file for each process -# Include branch coverage export COVERAGE_OPTS="-p" export DUMP_COVERAGE_COMMAND="coverage help" diff --git a/synapse/api/filtering.py b/synapse/api/filtering.py index bc03d6c287..4390d01e38 100644 --- a/synapse/api/filtering.py +++ b/synapse/api/filtering.py @@ -62,10 +62,29 @@ class Filtering(object): self._check_definition(user_filter_json[key]) if "room" in user_filter_json: + self._check_definition_room_lists(user_filter_json["room"]) for key in room_level_definitions: if key in user_filter_json["room"]: self._check_definition(user_filter_json["room"][key]) + def _check_definition_room_lists(self, definition): + """Check that "rooms" and "not_rooms" are lists of room ids if they + are present + + Args: + definition(dict): The filter definition + Raises: + SynapseError: If there was a problem with this definition. + """ + # check rooms are valid room IDs + room_id_keys = ["rooms", "not_rooms"] + for key in room_id_keys: + if key in definition: + if type(definition[key]) != list: + raise SynapseError(400, "Expected %s to be a list." % key) + for room_id in definition[key]: + RoomID.from_string(room_id) + def _check_definition(self, definition): """Check if the provided definition is valid. @@ -85,14 +104,7 @@ class Filtering(object): 400, "Expected JSON object, not %s" % (definition,) ) - # check rooms are valid room IDs - room_id_keys = ["rooms", "not_rooms"] - for key in room_id_keys: - if key in definition: - if type(definition[key]) != list: - raise SynapseError(400, "Expected %s to be a list." % key) - for room_id in definition[key]: - RoomID.from_string(room_id) + self._check_definition_room_lists(definition) # check senders are valid user IDs user_id_keys = ["senders", "not_senders"] @@ -119,29 +131,19 @@ class FilterCollection(object): def __init__(self, filter_json): self.filter_json = filter_json - self.room_timeline_filter = Filter( - self.filter_json.get("room", {}).get("timeline", {}) - ) - - self.room_state_filter = Filter( - self.filter_json.get("room", {}).get("state", {}) - ) - - self.room_ephemeral_filter = Filter( - self.filter_json.get("room", {}).get("ephemeral", {}) - ) - - self.room_account_data = Filter( - self.filter_json.get("room", {}).get("account_data", {}) - ) + room_filter_json = self.filter_json.get("room", {}) - self.presence_filter = Filter( - self.filter_json.get("presence", {}) - ) + self.room_filter = Filter({ + k: v for k, v in room_filter_json.items() + if k in ("rooms", "not_rooms") + }) - self.account_data = Filter( - self.filter_json.get("account_data", {}) - ) + self.room_timeline_filter = Filter(room_filter_json.get("timeline", {})) + self.room_state_filter = Filter(room_filter_json.get("state", {})) + self.room_ephemeral_filter = Filter(room_filter_json.get("ephemeral", {})) + self.room_account_data = Filter(room_filter_json.get("account_data", {})) + self.presence_filter = Filter(self.filter_json.get("presence", {})) + self.account_data = Filter(self.filter_json.get("account_data", {})) self.include_leave = self.filter_json.get("room", {}).get( "include_leave", False @@ -163,16 +165,16 @@ class FilterCollection(object): return self.account_data.filter(events) def filter_room_state(self, events): - return self.room_state_filter.filter(events) + return self.room_state_filter.filter(self.room_filter.filter(events)) def filter_room_timeline(self, events): - return self.room_timeline_filter.filter(events) + return self.room_timeline_filter.filter(self.room_filter.filter(events)) def filter_room_ephemeral(self, events): - return self.room_ephemeral_filter.filter(events) + return self.room_ephemeral_filter.filter(self.room_filter.filter(events)) def filter_room_account_data(self, events): - return self.room_account_data.filter(events) + return self.room_account_data.filter(self.room_filter.filter(events)) class Filter(object): -- cgit 1.4.1