There are multiple race conditions when dealing with a git repo in a parallel nature. If you follow these steps, the lsf jobs will work in publish mode with one down side.
1) Call TestIds.lsf_init(git_repo, publish_flag)
before you kick off any lsf jobs. IMPORTANT: git_repo
and publish_flag
are not tied to your configure method declarations
2) Call TestIds.lsf_shutdown(publish_flag)
after you kick off all the jobs and you Origen.lsf.wait_for_completion. IMPORTANT: publish_flag
are not tied to your configure method declarations
The downside of this implementation is that the repo will be locked until all LSF jobs are complete. It is recommended that you only run in publish mode when you are trying to release an application version.
# User defined setup for LSF job submission # Example TestIds.lsf_init(Origen.app.config.test_ids_repo, !(Origen.mode.debug?)) TestIds.lsf_init(git_repo, publish_flag) # Submit all LSF jobs Origen.lsf.wait_for_completion # Example TestIds.lsf_shutdown(!(Origen.mode.debug?)) TestIds.lsf_shutdown(publish_flag)
Added method to permit complete reset of TestIds data for test purposes only.
--ranges
option to clear command to support clearing rangesFixed softbin ranges and database update issues
fixed corner case bug for test ranges
Added compatibility with program generator targets that support sub-flows, such as SMT8. No changes to the user facing API.
Significant internal overhaul, probably fixing many unknown bugs and corner cases.
It is a breaking change in that callbacks now only have a single option argument and they should declare the other number types that they rely on, for example this:
config.softbins do |bin| bin * 5 end
should now be changed to this:
config.softbin needs: :bin do |options| options[:bin] * 5 end
See the pull request for full details on other improvements, or see the latest docs which are fully up to date:
PR - https://github.com/Origen-SDK/test_ids/pull/17 Docs - https://origen-sdk.org/test_ids
Fixes Github issues #14 and #15
Added capability to use ranges per test for Bins/Softbins and Test Numbers. It is recommended to follow the contraints that Bins get configured first, followed by Softbins and numbers.
Added test_ids:clear command to clear the database.
Added the ability for the test number to be referenced in a softbin algorithm, e.g. here to set the softbin to the same as the test number:
TestIds.configure do |config| config.bins.include << (1..3) config.softbins.algorithm = :nnnn config.numbers.include << (8000..9000) end
The TestIds.allocate method now includes the assigned sizes in the returned hash
Now supports independent assignment of bin, softbin and test numbers, allowing for example multiple instances of the same test to have the same bin but unique test numbers.
Also now supports reserving multiple numbers per test instead of only 1.
Fixed bug where an empty store would get checked in (thereby losing all existing allocations) if Origen crashed before generating a test
Added ability to pass in test_ids: :notrack to flow.test to prevent TestIds from tracking/ assigning bin numbers to a particular test
Fixed bug whereby setting a number to :none would result in the existing allocation being lost from the store.
Added test_ids:rollback command to allow easy rollback of the store in the event of a bad commit/run being made.
Added ability to set bins, etc. to :none, and added TestIds.allocate method
Further update to make the store checkin/out more robust between workspaces
Updated the store checkout/in process to do a better job of preventing merges between different workspaces. If a merge occurs it can result in lost bin refs, this should prevent merges ever occurring.
Added option to supply a :test_id key. When present, this will be used by test_ids to identify the test instead of the name used within the test program, causing all tests with the same ID to use the same numbers:
func :my_func_33mhz, test_id: :my_func # Will all be treated like the same test by test_ids, func :my_func_25mhz, test_id: :my_func # and will therefore all be assigned the same numbers func :my_func_16mhz, test_id: :my_func
Added TestIds.publish = false to inhibit checking into Git repo, but result still stored locally.
Fixed but causing a runtime error if the plugin was added but a configuration was never called.
Bug fix to test number generation from a template
Initial release