Guide to subunit2sql’s Python API¶
DB API Guide¶
add_run_metadata
(meta_dict, run_id, session=None)[source]Add a metadata key value pairs for a specific run.
This method will take a dictionary and store key value pair metadata in the DB associated with the specified run.
- Parameters
meta_dict (dict) – A dictionary which will generate a separate key value pair row associated with the run_id
run_id (str) – The uuid of the run to update. (value of the id column for the row to be updated)
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of created metadata objects
- Return type
subunit2sql.models.RunMeta
add_test_metadata
(meta_dict, test_id, session=None)[source]Add a metadata key value pairs for a specific test.
This method will take a dictionary and store key value pair metadata in the DB associated with the specified run.
- Parameters
meta_dict (dict) – A dictionary which will generate a separate key value pair row associated with the test_run_id
test_id (str) – The uuid of the test to update. (value of the id column for the row to be updated)
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of created metadata objects
- Return type
subunit2sql.models.TestMeta
add_test_run_attachments
(attach_dict, test_run_id, session=None)[source]Add attachments a specific test run.
This method will take a dictionary and store key blob pair attachments in the DB associated with the specified test_run.
- Parameters
attachments_dict (dict) – A dictionary which will generate a separate key blob pair row associated with the test_run_id
test_run_id (str) – The uuid of the test_run to update. (value of the id column for the row to be updated)
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of created attachment objects
- Return type
subunit2sql.models.Attachments
add_test_run_metadata
(meta_dict, test_run_id, session=None)[source]Add a metadata key value pairs for a specific run.
This method will take a dictionary and store key value pair metadata in the DB associated with the specified run.
- Parameters
meta_dict (dict) – A dictionary which will generate a separate key value pair row associated with the test_run_id
test_run_id (str) – The uuid of the test_run to update. (value of the id column for the row to be updated)
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of created metadata objects
- Return type
subunit2sql.models.TestRunMeta
create_run
(skips=0, fails=0, passes=0, run_time=0, artifacts=None, id=None, session=None, run_at=None)[source]Create a new run record in the database
- Parameters
skips (int) – Total number of skipped tests defaults to 0
fails (int) – Total number of failed tests defaults to 0
passes (int) – Total number of passed tests defaults to 0
run_time (float) – Total run timed defaults to 0
artifacts (str) – A link to any artifacts from the test run defaults to None
id (str) – The run id for the new run, needs to be a unique value
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
run_at – Optional time at which the run was started. If not specified the time that data is added to the DB will be used instead
- Returns
The run object stored in the DB
- Return type
subunit2sql.models.Run
create_test
(test_id, run_count=0, success=0, failure=0, run_time=0.0, session=None)[source]Create a new test record in the database.
This method is used to add a new test in the database. Tests are used to track the run history of a unique test over all runs.
- Parameters
test_id (str) – test_id identifying the test
run_count (int) – Total number or runs defaults to 0
success (int) – Number of successful runs defaults 0
failure (int) – Number of failed runs defaults to 0
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
The test object stored in the DB
- Return type
subunit2sql.models.Test
- Raises
InvalidRunCount – If the run_count doesn’t equal the sum of the successes and failures.
create_test_run
(test_id, run_id, status, start_time=None, end_time=None, session=None)[source]Create a new test run record in the database
This method creates a new record in the database
- Parameters
test_id (str) – UUID for test that was run
run_id (str) – UUID for run that this was a member of
status (str) – Status of the test run, normally success, fail, or skip
start_time (datetime.Datetime) – When the test was started defaults to None
end_time (datetime.Datetime) – When the test was finished defaults to None
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
The test_run object stored in the DB
- Return type
subunit2sql.models.TestRun
delete_old_runs
(expire_age=186, session=None)[source]Delete all runs and associated metadata older than the provided age
- Parameters
expire_age (int) – The number of days into the past to use as the expiration date for deleting the runs
session – Optional session object if one isn’t provided a new session
delete_old_test_runs
(expire_age=186, session=None)[source]Delete all test runs and associated metadata older than the provided age
- Parameters
expire_age (int) – The number of days into the past to use as the expiration date for deleting the test runs
session – Optional session object if one isn’t provided a new session
delete_run_by_uuid
(run_uuid, session=None)[source]Delete a single test run based on its uuid.
- Parameters
uuid (str) – The uuid of the run that will be deleted.
session – Optional session object. if one isn’t provided, a new session will be created.
delete_test_runs_by_run_uuid
(run_uuid, session=None)[source]Delete all test runs included in a given run
- Parameters
uuid (str) – The uuid of the run that will be deleted.
session – Optional session object. if one isn’t provided, a new session will be created.
get_all_run_metadata_keys
(session=None)[source]Get a list of all the keys used in the run_metadata table
- Parameters
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return keys
A list of all keys used in the run_metadata table
- Return type
list
get_all_runs
(session=None)[source]Return all runs from the DB.
- Parameters
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of run objects
- Return type
subunit2sql.models.Run
get_all_runs_by_date
(start_date=None, stop_date=None, session=None)[source]Return all runs from the DB.
- Parameters
str – Optional start_date, if provided only runs started at or after the start_date will be included in the response
str – Optional end_date, if provided only runs started at or before the end_date will be included in the response
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of run objects
- Return type
subunit2sql.models.Run
get_all_runs_time_series_by_key
(key, start_date=None, stop_date=None, session=None)[source]Get a time series of run summaries grouped by a key
This method will get a time series dictionary of run summary views which are grouped by the values of the specified key
- Parameters
key (str) – The key to use for grouping the run summaries
start_date (str) – Optional start date to filter results on
stop_date (str) – Optional stop date to filter results on
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return runs
A time series dictionary of runs grouped by values of the specified key
- Return type
dict
get_all_test_metadata_keys
(session=None)[source]Get a list of all the keys used in the test_metadata table
- Parameters
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return keys
A list of all keys used in the test_metadata table
- Return type
list
get_all_test_run_metadata_keys
(session=None)[source]Get a list of all the keys used in the test_run_metadata table
- Parameters
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return keys
A list of all keys used in the test_run_metadata table
- Return type
list
get_all_test_runs
(session=None)[source]Return all test runs from the DB.
- Parameters
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of test run objects
- Return type
subunit2sql.models.TestRun
get_all_tests
(session=None)[source]Return all tests from the DB.
- Parameters
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of test objects
- Return type
subunit2sql.models.Test
get_engine
(use_slave=False)[source]Get a new sqlalchemy engine instance
- Parameters
use_slave (bool) – If possible, use ‘slave’ database for this engine
- Returns
The engine object for the database connection
- Return type
sqlalchemy.engine.Engine
get_failing_from_run
(run_id, session=None)[source]Return the set of failing test runs for a give run.
This method will return all the test run objects that failed during the specified run.
- Parameters
run_id (str) – UUID for the run to find all the failing runs
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of failing test runs for the given run
- Return type
subunit2sql.models.TestRun
get_failing_test_ids_from_runs_by_key_value
(key, value, session=None)[source]Get a list of failing test_ids from runs with run_metadata.
This method gets a distinct list of test_ids (the test_id column not the id column) from all runs that match a run metadata key value pair.
- Parameters
key (str) – The key to use to match runs from in run_metadata
value (str) – The value of the key in run_metadata to match runs against
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
A list of test_ids that failed from runs that match the provided key value run_metadata pair
- Return type
list
get_id_from_test_id
(test_id, session=None)[source]Return the id (uuid primary key) for a test given it’s test_id value
- Parameters
test_id (str) – The test_id’s string (not UUID) to identify the test
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
The id for the specified test
- Return type
str
get_ids_for_all_tests
(session=None)[source]Return an iterator of ids (uuid primary key) for all tests in the database
- Parameters
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
The iterator of all ids for tests in the tests table
- Return type
iterator
get_latest_run
(session=None)[source]Return the most recently created run from the DB.
- Parameters
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
The latest run object
- Return type
subunit2sql.models.Run
get_recent_failed_runs
(num_runs=10, session=None, start_date=None)[source]Return a list of run uuid strings for the most recent failed runs
- Parameters
num_runs (int) – The number of runs to return in the list
session – Optional session object if one isn’t provided a new session
start_date (datetime) – An optional date to use as the starting point for getting recent runs. Only runs after this date will be returned.
- Return list
A list of run uuid strings (the id column in the runs table) for the most recent runs.
get_recent_failed_runs_by_run_metadata
(key, value, num_runs=10, start_date=None, session=None)[source]Get a list of recent failed runs for a given run metadata pair
- Parameters
key (str) – The run_metadata key to get failed runs
value (str) – The run_metadata value to get failed runs
num_runs (int) – The number of results to fetch, defaults to 10
start_date (datetime) – The optional starting dates to get runs from. Nothing older than this date will be returned
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of recent failed Run objects
- Return type
subunit2sql.models.Run
get_recent_runs_by_key_value_metadata
(key, value, num_runs=10, session=None, start_date=None)[source]Get a list of runs for recent runs with a key value metadata pair
- Parameters
num_runs (int) – The number of runs to return in the list
session – Optional session object if one isn’t provided a new session
start_date (datetime) – An optional date to use as the starting point for getting recent runs. Only runs after this date will be returned.
- Return list
A list of run objects for the most recent runs.
- Return type
subunit2sql.db.models.Run
get_recent_successful_runs
(num_runs=10, session=None, start_date=None)[source]Return a list of run uuid strings for the most recent successful runs
- Parameters
num_runs (int) – The number of runs to return in the list
session – Optional session object if one isn’t provided a new session
start_date (datetime) – An optional date to use as the starting point for getting recent runs. Only runs after this date will be returned.
- Return list
A list of run uuid strings (the id column in the runs table) for the most recent runs.
get_recent_successful_runs_by_run_metadata
(key, value, num_runs=10, start_date=None, session=None)[source]Get a list of recent successful runs for a given run metadata pair
- Parameters
key (str) – The run_metadata key to get successful runs
value (str) – The run_metadata value to get successful runs
num_runs (int) – The number of results to fetch, defaults to 10
start_date (datetime) – The optional starting dates to get runs from. Nothing older than this date will be returned
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of recent failed Run objects
- Return type
subunit2sql.models.Run
get_run_by_id
(id, session=None)[source]Get an individual run by it’s id.
- Parameters
id (str) – The id for the run
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
The specified run object
- Return type
subunit2sql.models.Run
get_run_failure_rate_by_key_value_metadata
(key, value, start_date=None, stop_date=None, session=None)[source]Return the failure percentage of runs with a set of run metadata
- Parameters
key (str) – The metadata key to use for matching the runs
value (str) – The metadata value to use for matching the runs
start_date – Optional start date to filter results on
stop_date (str) – Optional stop date to filter results on
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return failure_rate
The percentage of runs that failed, will be None if no runs are found
- Return type
float
get_run_id_from_uuid
(uuid, session=None)[source]Get the id for a run by it’s uuid
- Parameters
uuid (str) – The uuid for the run
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
The id for the run with the provided uuid
- Return type
int
get_run_metadata
(run_id, session=None)[source]Return all run metadata objects associated with a given run.
- Parameters
run_id (str) – The uuid of the run to get all the metadata
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of metadata objects
- Return type
subunit2sql.models.RunMetadata
get_run_times_all_test_runs
(tests=None, start_date=None, stop_date=None, session=None)[source]Return the all the individual duration times for each test_run
This function will return a dictionary where each key is a test_id and the value is a list of all the durations for each run of that test
- Parameters
tests (list) – the list of test_ids to get results for, if none is specified all tests
start_date (str) – The date to use as the start date for results
stop_date (str) – The date to use as the cutoff date for results
session – optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return run_times
all the durations for test_runs grouped by test_id
- Return type
dict
get_run_times_grouped_by_run_metadata_key
(key, start_date=None, stop_date=None, session=None, match_key=None, match_value=None)[source]Return the aggregate run times for all runs grouped by a metadata key
The results of the output can be limited to runs with a different matching key value run_metadata pair using the match_key and match_value parameters.
- Parameters
key – The run_metadata key to use for grouping runs
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
match_key (str) – An optional key as part of a key value run_metadata pair to filter the runs used to. This can not be the same as the key parameter. If match_value is not also specified this does nothing
match_value (str) – An optional value as part of a key value run_metadata pair to filter the runs used to. If match_key is not also specified this does nothing.
- Returns
A dictionary where keys are the value of the provided metadata key and the values are a list of run_times for successful runs with that metadata value
- Return type
dict
get_run_times_time_series_grouped_by_run_metadata_key
(key, start_date=None, stop_date=None, session=None, match_key=None, match_value=None)[source]Get a times series dict of aggregate run times grouped by a metadata key
The results of the output can be limited to runs with a different matching key value run_metadata pair using the match_key and match_value parameters.
- Parameters
key – The run_metadata key to use for grouping runs
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
match_key (str) – An optional key as part of a key value run_metadata pair to filter the runs used to. This can not be the same as the key parameter. If match_value is not also specified this does nothing
match_value (str) – An optional value as part of a key value run_metadata pair to filter the runs used to. If match_key is not also specified this does nothing.
- Returns
A dictionary where keys are the time stamp and the value is a dict with the key being the value of the provided metadata key and the values are run times for the successful runs
- Return type
dict
get_runs_by_ids
(ids, session=None)[source]Get a list of runs by their ids.
- Parameters
id (list) – A list of run ids for the run
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
The list of the specified run objects
- Return type
list
get_runs_by_key_value
(key, value, session=None)[source]Return all run objects associated with a certain key/value metadata pair
- Parameters
key – The key to be matched
value – The value to be matched
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of runs
- Return type
subunit2sql.models.Run
get_runs_by_status_grouped_by_run_metadata
(key, start_date=None, stop_date=None, session=None)[source]
get_runs_count
(session=None)[source]Get the number of runs currently in the database
- Return count
The number of runs in the DB
- Return type
int
get_runs_counts_by_run_metadata
(key, value, start_date=None, session=None)[source]Check runs for a given run metadata pair
- Parameters
key (str) – The run_metadata key to check runs
value (str) – The run_metadata value to check runs
start_date (datetime) – The optional starting dates to get runs from. Nothing older than this date will be returned
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return count
A count for a given run metadata key-value pair
- Return type
int
get_session
(autocommit=True, expire_on_commit=False)[source]Get a new sqlalchemy Session instance
- Parameters
autocommit (bool) – Enable autocommit mode for the session.
expire_on_commit (bool) – Expire the session on commit defaults False.
get_test_by_id
(id, session=None)[source]Get an individual test by it’s uuid.
- Parameters
id (str) – The uuid for the test (the id field in the DB)
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
The specified test object
- Return type
subunit2sql.models.Test
get_test_by_test_id
(test_id, session=None)[source]Get an individual test by it’s test_id.
- Parameters
test_id (str) – The id (aka the test name) for the test (the test_id field in the DB)
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
The specified test object
- Return type
subunit2sql.models.Test
get_test_counts_in_date_range
(test_id, start_date=None, stop_date=None, session=None)[source]Return the number of successes, failures, and skips for a single test.
Optionally you can provide a date to filter the results to be within a certain date range
- Parameters
test_id (str) – The test_id’s ID(big integer) to identify the test
start_date (datetime) – The date to use as the start for counting. A str in the datetime str format “%b %d %Y” was the previous format here and will still work but is deprecated in favor of passing in a datetime object.
stop_date (datetime) – The date to use as the cutoff for counting. A str in the datetime str format “%b %d %Y” was the previous format here and will still work but is deprecated in favor of passing in a datetime.
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
A dict containing the number of successes, failures, and skips
- Return type
dict
get_test_metadata
(test_id, session=None)[source]Return all test metadata objects for associated with a given test.
- Parameters
test_id (str) – The uuid of the test to get all the metadata
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of created metadata objects
- Return type
subunit2sql.models.TestMetadata
get_test_prefixes
(session=None)[source]Returns all test prefixes from the DB.
This returns a list of unique test_id prefixes from the database, defined as the first dot-separated token in the test id. Prefixes wrapped in function syntax, such as ‘setUpClass (a’, will have this extra syntax stripped out of the returned value, up to and including the ‘(‘ character.
As an example, given an input test with an ID ‘prefix.test.Clazz.a_method’, the derived prefix would be ‘prefix’. Given a second test with an ID ‘setUpClass (prefix.test.Clazz)’, the derived prefix would also be ‘prefix’. If this function were called on a database containing only these tests, a list with only one entry, ‘prefix’, would be returned.
Note that this implementation assumes that tests ids are semantically separated by a period. If this is not the case (and no period characters occur at any position within test ids), the full test id will be considered the prefix, and the result of this function will be all unique test ids in the database.
- Parameters
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
A list of all unique prefix strings, with any extraneous details removed, e.g. ‘setUpClass (‘.
- Return type
str
get_test_run_by_id
(test_run_id, session=None)[source]Get an individual test run by it’s id.
- Parameters
test_run_id (str) – The id for the test run
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
The specified test run object
- Return type
subunit2sql.models.TestRun
get_test_run_dict_by_run_meta_key_value
(key, value, start_date=None, stop_date=None, session=None)[source]Get a list of test run dicts from runs with a run metadata key value pair
- Parameters
key (str) – The key to use to match runs from in run_metadata
value (str) – The value of the key in run_metadata to match runs against
start_date – Optional start date to filter results on
stop_date – Optional stop date to filter results on
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return test_runs
The dictionary of all the tests run on any run that had metadata matching the provided key value pair.
- Return type
dict
get_test_run_duration
(test_run_id, session=None)[source]Get the run duration for a specific test_run.
- Parameters
test_run_id (str) – The test_run’s uuid (the id column in the test_run table) to get the duration of
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
The duration of the test run in secs
- Return type
float
get_test_run_metadata
(test_run_id, session=None)[source]Return all run metadata objects for associated with a given run.
- Parameters
test_run_id (str) – The uuid of the test_run to get all the metadata
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of created metadata objects
- Return type
subunit2sql.models.RunMeta
get_test_run_series
(start_date=None, stop_date=None, session=None, key='build_queue', value='gate')[source]Returns a time series dict of total daily run counts
- Parameters
start_date (str) – Optional start date to filter results on
stop_date (str) – Optional stop date to filter results on
session – Optional session object if one isn’t provided a new session
key (str) – Optional run_metadata key to filter the runs used on. Key must be specified with value for filtering to occur. This defaults to ‘build_queue’ for backwards compatibility with earlier versions. Note, this default will be removed in the future.
value (str) – Optional run_metadata value to filter the runs used on. Value must be specified with key for filtering to occur. This defaults to ‘gate’ for backwards compatibility with earlier versions. Note, this default will be removed in the future.
- Return dict
A dictionary with the dates as the keys and the values being the total run count for that day. (The sum of success and failures from all runs that started that day)
get_test_run_time_series
(test_id, session=None)[source]Returns a time series dict of run_times for successes of a single test
- Parameters
test_id (str) – The test’s uuid (the id column in the test table) which will be used to get all the test run times for.
session – Optional session object if one isn’t provided a new session
- Return dict
A dictionary with the start times as the keys and the values being the duration of the test that started at that time in sec.
get_test_runs_by_run_id
(run_id, session=None)[source]Get all test runs for a specific run.
- Parameters
run_id (str) – The run’s uuid (the uuid column in the run table) which to get all test runs for
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of test run objects for the specified test
- Return type
subunit2sql.models.TestRun
get_test_runs_by_status_for_run_ids
(status, run_ids, key=None, session=None, include_run_id=False, include_attachments=False)[source]Get a list of test run dicts by status for all the specified runs
- Parameters
status (str) – The test status to filter the returned test runs on
run_ids (list) – A list of run ids (the uuid column from the runs table) to get the test runs from
key (str) – An optional run_metadata key to add the values for a run to the output dict for each test_run
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
include_run_id (bool) – boolean flag to enable including the run uuid in the test run dicts returned
include_attachments (bool) – boolean flag to enable including a list of attachments with labels in the test run dicts returned
- Return test_runs
A list of dicts for the test_runs and associated data
- Return type
list
get_test_runs_by_test_id
(test_id, session=None)[source]Get all test runs for a specific test.
- Parameters
test_id (str) – The test’s uuid (the id column in the test table) which to get all test runs for
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return list
The list of test run objects for the specified test
- Return type
subunit2sql.models.TestRun
get_test_runs_by_test_test_id
(test_id, start_date=None, stop_date=None, session=None, key=None, value=None, most_recent_first=False)[source]Get all test runs for a specific test by the test’stest_id column
- Parameters
test_id (str) – The test’s test_id (the test_id column in the test table) which to get all test runs for
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
start_date (datetime.datetime) – The date to use as the start date for results
stop_date (datetime.datetime) – The date to use as the cutoff date for results
key (str) – An optional key for run metadata to filter the test runs on. Must be specified with a value otherwise it does nothing.
value (str) – An optional value for run metadata to filter the test runs on. Must be specified with a key otherwise it does nothing.
most_recent_first (bool) – If true order the results list by date of test_run start_time in descending order.
- Return list
The list of test run objects for the specified test
- Return type
subunit2sql.models.TestRun
get_test_status_time_series
(test_id, session=None)[source]Returns a time series dict of test_run statuses of a single test
- Parameters
test_id (str) – The test’s uuid (the id column in the test table) which will be used to get all the test run times for.
session – Optional session object if one isn’t provided a new session
- Return dict
A dictionary with the start times as the keys and the values being the status of that test run.
get_tests_by_prefix
(prefix, session=None, limit=100, offset=0)[source]Returns all tests with the given prefix in the DB.
A test prefix is the first segment of a test_id when split using a period (‘.’). This function will return a list of tests whose first period-separated token ends with the specified prefix. As a side-effect, given an input ‘a’, this will return tests with prefixes ‘a’, but also prefixes wrapped in function syntax, such as ‘setUpClass (a’.
Note that this implementation assumes that tests ids are semantically separated by a period. If no period character exists in a test id, its prefix will be considered the full test id, and this method may return unexpected results.
- Parameters
prefix (str) – The test prefix to search for
session – Optional session object: if one isn’t provided, a new session will be acquired for the duration of this operation
limit (int) – The maximum number of results to return
offset (int) – The starting index, for pagination purposes
- Return list
The list of matching test objects, ordered by their test id
- Return type
subunit2sql.models.Test
get_tests_by_test_ids
(test_ids, session=None)[source]Get tests that match input test_ids
- Parameters
test_ids (list) – A list of test_ids (aka the test name) for the test
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
A list of the specified test objects
- Return type
list
get_tests_from_run_id
(run_id, session=None)[source]Return the all tests for a specific run.
This method returns a list of all the Test objects that were executed as part of a specified run.
- Parameters
run_id (str) – The run’s uuid (the id column in the run table) which to get all tests for
session – Optional session object if one isn’t provided a new session
- Return list
The list of test objects for the specified test
- Return type
subunit2sql.models.Test
get_tests_run_dicts_from_run_id
(run_id, session=None)[source]Returns all the stored data about test runs for a specific run.
This method returns a dictionary containing all the information stored in the database regarding the test_runs. This includes the test_id from the tests table, all the stored key value pair metadata from the test_run_metadata table, and from the test_runs table the status, start_time, and stop_time.
- Parameters
run_id (str) – The run’s uuid (the id column in the run table) which to use to select it’s run ids to collect information for.
session – Optional session object if one isn’t provided a new session
- Return dict
A dictionary with the test_id from the tests for keys that contains all the stored information about the test_runs.
get_time_series_runs_by_key_value
(key, value, start_date=None, stop_date=None, session=None)[source]Get a time series of runs with meta for all runs with a key value pai
- Parameters
key (str) – The metadata key to use for matching the runs
value (str) – The metadata value to use for matching the runs
start_date – Optional start date to filter results on
stop_date (str) – Optional stop date to filter results on
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Return runs
A time series dictionary (where the top level key is a timestamp) that contains all the runs which
- Return type
dict
update_run
(values, run_id, session=None)[source]Update an individual run with new data.
This method will take a dictionary of fields to update for a specific run. If a field is omitted it will not be changed in the DB.
- Parameters
values (dict) – Dict of values to update the test with. The key is the column name and the value is the new value to be stored in the DB
run_id (str) – The uuid of the run to update. (value of the id column for the row to be updated)
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
The updated run object stored in the DB
- Return type
subunit2sql.models.Run
update_test
(values, test_id, session=None)[source]Update an individual test with new data.
This method will take a dictionary of fields to update for a specific test. If a field is omitted it will not be changed in the DB.
- Parameters
values (dict) – Dict of values to update the test with. The key is the column name and the value is the new value to be stored in the DB
test_id (str) – The uuid of the test to update. (value of the id column for the row to be updated)
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
The updated test object stored in the DB
- Return type
subunit2sql.models.Test
update_test_run
(values, test_run_id, session=None)[source]Update an individual test_run with new data.
This method will take a dictionary of fields to update for a specific test_run. If a field is omitted it will not be changed in the DB.
- Parameters
values (dict) – Dict of values to update the test with. The key is the column name and the value is the new value to be stored in the DB
test_run_id (str) – The uuid of the test_run to update. (value of the id column for the row to be updated)
session – Optional session object if one isn’t provided a new session will be acquired for the duration of this operation
- Returns
The updated test_run object stored in the DB
- Return type
subunit2sql.models.TestRun
Example usage patterns¶
Initializing subunit2sql¶
The first step to using subunit2sql inside your program is to initialize the db layer client. This can be accomplished just by loading the config followed by setting the necessary values:
from subunit2sql import shell
# Load default config
shell.parse_args([])
# Set database connection
db_uri = 'mysql://subunit:subunit@localhost/subunit'
shell.CONF.set_override('connection', db_uri, group='database')
However, if your already using oslo.config in your program you should just use the options from subunit2sql instead of this step. See the oslo.config documentation on how to do this. These steps are provided to avoid using oslo.config in any consumers of subunit2sql.
Additionally you can use a separate subunit2sql config file in your program to specify these options and just pass that config file into subunit2sql:
from subunit2sql import shell
subunit2sql_conf_path = './subunit2sql.conf'
# Initialize subunit2sql config
shell.parse_args([], [subunit2sql_conf_path])
The tradeoff here is that you have to have a file available to configure subunit2sql.
Another alternative is to initialize a sqlalchemy engine to create a session with the appropriate db url. This session can then be passed to all API calls without having to deal with oslo.config:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
# Create engine with db url for session generation
engine=create_engine('mysql://subunit:subunit@localhost/subunit')
Session = sessionmaker(bind=engine)
# Create a new session to pass to API calls
# EX: api.get_run_metadata(session=session)
session = Session()
Parsing subunit stream and storing it in a DB¶
If your program is generating a subunit stream or reading one from somewhere and you’d like to integrate storing it into a subunit2sql db inline this can easily be accomplished by first parsing the file object and then writing that to the db.:
from subunit2sql import shell
from subunit2sql import read_subunit
subunit_file = open('subunit_file', 'r')
# Load default config
shell.cli_opts()
shell.parse_args([])
# Set database connection
db_uri = 'mysql://subunit:subunit@localhost/subunit'
shell.CONF.set_override('connection', db_uri, group='database')
# Parse results and write to DB
stream = read_subunit.ReadSubunit(subunit_file)
shell.process_results(stream.get_results())
If you’d like to set additional metadata for the runs you are adding to the DB you can do this by overriding the conf variables. However, you’ll need to load the options (which would normally be set on the cli todo this, which looks like:
from subunit2sql import shell
from subunit2sql import read_subunit
subunit_file = open('subunit_file', 'r')
# Load default config
shell.cli_opts()
shell.parse_args([])
# Set database connection
db_uri = 'mysql://subunit:subunit@localhost/subunit'
shell.CONF.set_override('connection', db_uri, group='database')
# Set run metadata and artifact path
artifacts = 'http://fake_url.com'
metadata = {
'job_type': 'full-run',
'job_queue': 'gate',
'build_id': 'fun_hash'
}
shell.CONF.set_override('artifacts', artifacts)
shell.CONF.set_override('run_meta', metadata)
# Parse results and write to DB
stream = read_subunit.ReadSubunit(subunit_file)
shell.process_results(stream.get_results())
keep in mind that oslo.config uses a global object to store options so if you’re considering doing this in parallel somehow that may be something to consider.