Граф коммитов

59 Коммитов

Автор SHA1 Сообщение Дата
Manuel de la Pena 505006952c
[Tests] Add a new iOS app to run the xunit and nunit tests (#4914)
Mono know provides a set of testing assemblies that contain the tests to be ran in each of the supported platforms. This commit adds the following:

1. Two different runners that can be used to execute NUnit and xUnit tests.
2. The necessary  glue to get xharness to run the new tests and report the results.
3. A new test that will ensure that if mono adds new tests, xharness will report failures if the tests are not run or not ignored.
2018-11-16 13:31:40 -05:00
Rolf Bjarne Kvinge 1f5ba0b5c0
[xharness] Improve logging a bit. (#4952)
* [xharness] Improve logging a bit.

* Use timestamp in more log paths.
* Create numbered log subdirectories to make things nicer to look at in a
  terminal (thousands of subdirectories can be annoying to shift through; this
  way there's an additional subdirectory level).

* Avoid string interpolation when not needed.
2018-10-10 08:05:26 +02:00
Rolf Bjarne Kvinge e35869dfdd
[xharness] Make sure to cancel the test listener both for device and simulator builds. (#4081)
This will make xharness not listen for tests to connect forever, decrease the
number of threads needed, and as well not print loads of aborted messages when
xharness exits:

    SimpleTcpListener: an exception occurred in processing thread: System.Threading.ThreadAbortException: Thread was being aborted.
      at xharness.SimpleTcpListener.Start () [0x0009d] in /Users/XamarinQA/vsts/_work/1/s/tests/xharness/SimpleTcpListener.cs:44
      at xharness.SimpleListener.<StartAsync>b__41_0 () [0x00002] in /Users/XamarinQA/vsts/_work/1/s/tests/xharness/SimpleListener.cs:93
2018-05-15 09:07:45 -04:00
Rolf Bjarne Kvinge 636b2547c5
[xharness] Detect launch failures better and report them as such. (#3682) 2018-03-07 14:48:24 +01:00
Rolf Bjarne Kvinge a2afb8597f
[xharness] Don't try to connect to unusable devices. (#3456) 2018-02-12 14:43:16 +01:00
Rolf Bjarne Kvinge b632c2348e
[xharness] Don't discriminate iPods, they can be useful too. (#3355) 2018-01-30 17:11:04 +01:00
Rolf Bjarne Kvinge 79f193709b
[xharness] Make it possible to select from the command line whether tests requiring system permissions should be executed or not. (#3053) 2017-11-28 19:16:46 +01:00
Rolf Bjarne Kvinge f9b4c93cf0
[xharness] Improve logging. (#3051)
Make the collection of logs (the `Logs` class) more capable by making it
disposable (which will dispose all contained logs) and give it a Directory
property to state where the logs should be stored. This makes it possible to
simplify a few repeated path calculations. It also allows us to easily dispose
the entire collection of logs when done with a test, as opposed to dispoing
the logs one by one.

Make LogFile more capable:

* Add support for writing byte arrays.
* Add support for logging after disposal: this will still write to the file,
  and not keep any files open after finished writing. This fixes a problem
  where writing to a log after it was disposed would crash xharness (which is
  not all that uncommon, given the async nature of how xharness runs tests).

This makes it possible to get rid of LogStream, and use LogFile instead.
2017-11-28 14:27:31 +01:00
Rolf Bjarne Kvinge 29277e1ad2
[xharness] Don't keep files open when not needed anymore. (#3035)
Dispose logs (so that the corresponding files are closed) when we're done with
them, and also don't open a file log by default (usually we just want a
filename to pass to somebody else), but instead open the file if needed.

This should decrease the number of open file descriptors in xharness, which
sometimes become a problem when running many tests.
2017-11-24 07:38:17 +01:00
Rolf Bjarne Kvinge 9e59425349
[xharness] Properly handle failure by mlaunch to wait for app exit. (#2946)
Detect MT1111 from mlaunch (which means mlaunch won't wait for the app to
exit), and instead use test run completion to determine test completion.

The main drawback is that if the test app crashes, it won't be detected (the
test run will time out, and reported as such), but it's still an improvement
over the current behavior (the tests may complete successfully, and still be
reported as timed out).

This also requires bumping maccore to get an updated mlaunch (one that reports
MT1111).
2017-11-02 12:46:18 +01:00
Rolf Bjarne Kvinge d01376acba [xharness] Estimate install time for watchOS apps on device, and use it to derive an installation timeout. (#2880) 2017-10-12 17:08:54 +02:00
Rolf Bjarne Kvinge 4a2dd86467 [xharness] Try to disable memory limits when running tests on device. (#2860)
This requires a maccore bump to get an updated mlaunch.
2017-10-10 11:02:24 +02:00
Sebastien Pouliot 82353fc804 fix merge issues 2017-09-15 17:21:05 -04:00
Sebastien Pouliot 05eb96d0a7 Merge branch 'xcode9' into xcode9-master-merge 2017-09-15 11:05:30 -04:00
Rolf Bjarne Kvinge d601a18199 [tests] Add support to xharness for excluding tests that require permission dialogs, and update monotouch-test accordingly. (#2418)
* [monotouch-test] Optionally ignore tests that show permission dialogs.

* [xharness] Add support for excluding tests that require permission dialogs.

* [xharness] Ignore introspection tests if we don't want permission dialogs.

Ignore introspection tests for now if we don't want permission dialogs, since
figuring out which API requires permissions is a tedious process (which we'll
eventually have to do though).
2017-08-03 18:58:04 +02:00
Rolf Bjarne Kvinge 9ce8f2568f [xharness] The wrapped xml output is now optional, so opt-in. (#2262) 2017-07-11 08:58:47 +02:00
Rolf Bjarne Kvinge 8a156eaf82 [tests] Fix missing information in test reporting on Jenkins. Fixes #51661. (#2246)
Improve test reporting using xml by adding custom information printed during
the test run into the xml, and then extract this information when reporting
test results in xharness (which is much easier than re-constructing the
information from the xml, which caused information to get lost since not
everything piece of interesting is in the xml).

https://bugzilla.xamarin.com/show_bug.cgi?id=51661
2017-06-26 17:34:32 +02:00
Vincent Dondain 900f73b2b1 Bump to Xcode 9 beta 2 (#2241)
* Bump to Xcode 9 beta 2

* [CoreImage] Stub out new CIImage filters in Xcode 9 beta 2.

* [monotouch-test] Update tests according to Xcode 9 beta 2.

* [xharness] Ask watch simulator tests to write output directly to a file.

It seems the watch simulator in Xcode 9 beta 2 has completely lost network
access (everything times out), so instead ask the tests to store results
directly in the resulting file.

This works for now since the watch simulator does not enforce the sandbox.

* [xharness] Rewrite the logic to write unit output to a file so that it works with Jenkins.

For Jenkins we ask the unit tests to produce XML, and this needs some special
treatment.

* [xharness] Protect against exceptions in the listener thread, so that it doesn't take xharness down.

* [xharness] Protect against a potential NullReferenceException, and fix one case where it would occur.

* [xharness] A few logging fixes.

* [Intents] Fix API & tests according to beta 2 changes.
2017-06-26 12:47:37 +02:00
Timothy Risi 25468bf617 Merge Quote methods into a single class instead of multiple versions (#2153) 2017-06-06 12:32:25 -08:00
Rolf Bjarne Kvinge 57ff742bd9 [xharness] Silence scary debug spew. (#2146) 2017-05-31 17:34:26 +02:00
Rolf Bjarne Kvinge ff4db020e6 [xharness] Parse crash logs to determine crash reason and report it accordingly. 2017-02-10 16:39:33 +01:00
Rolf Bjarne Kvinge da690aff81 [xharness] Show test xml files in the html report. (#1535)
* [xharness] Show test xml files in the html report.

* [xharness] Force links to xml files to show up in a new top-level window.

Jenkins shows the html report in an iframe, and links will load in that
iframe. This means that the browser renders the contents of the link as if it
was html, and rendering xml as html results in a blank page.

So set the target attribute on links to xml files, so that those xml files
open as top-level pages, and then the browser will rendering the xml like xml.
2017-01-20 10:42:55 +01:00
Rolf Bjarne Kvinge 8391a3ca39 [xharness] Major rewrite (add server mode, add device support, add today extension support).
* Add a server mode, which launches a web server (and a web page) that can be
  used to interactively run tests and view their results.

* Add support for running test assemblies in a today extension (generating a
  new set of projects, similar to how we generate tvOS/watchOS projects based
  on the iOS project, we now generate a today extension project in addition to
  the tvOS and watchOS projects).

* Load all the different tests (and show them in the html report, although
  they show up as 'ignored'), even for disabled/ignored tests. This makes
  disabled/ignored tests more visible, and also makes it possible to actually
  run them using the embedded web server.

* Add support for running tests on device. Tests will be executed on multiple
  devices simulatenously (any connected devices will be used).
2017-01-05 13:08:48 +01:00
Rolf Bjarne Kvinge ab21da1b85 [xharness] Add support for uninstalling apps from device. (#1413)
The new error message / number is used in mlaunch.
2017-01-02 08:58:46 +01:00
Rolf Bjarne Kvinge 9ffade2b16 [xharness] When a device from a list of multiple device candidates, order them first to make sure we select consistently. (#1401) 2016-12-22 18:55:25 +01:00
Rolf Bjarne Kvinge 1f81e38a1f [jenkins] Try to show a backtrace for processes that time out. (#1358) 2016-12-16 12:24:08 +01:00
Rolf Bjarne Kvinge 89757e6f60 [xharness] Capture entire log files on wrench. (#1206) 2016-11-17 08:07:09 +01:00
Rolf Bjarne Kvinge c83fa8a9bb [xharness] Fix target selection for simulators on wrench. (#1204) 2016-11-16 19:06:26 +01:00
Rolf Bjarne Kvinge 15b1204874 [xharness] Unify simulator selection code between Jenkins and Wrench and automatically create device pairs if none applicable is found. (#1202)
* [xharness] Don't crash if we can't find a simulator.

* [xharness] Create a device pair if none applicable is found.

* [xharness] Use an enum instead of string values for the target.

* [xharness] Unify the simulator selection code between Jenkins and Wrench.
2016-11-16 15:23:11 +01:00
Rolf Bjarne Kvinge d646d522f3 [xharness] When finding watchos device types, only find the ones that are in available device pairs. (#1198) 2016-11-15 20:20:36 +01:00
Manuel de la Pena aa38ab68ac [Jenkins] Add nuint xml logs (#883)
* [Jenkins] Make test to write output as an xml file so that it can be parsed by the jenkins bot.

* Point to the correct Touvh.Unit repo.

* Use the available property to determine if we are being ran in Jenkins.

* Log where are test results stored.

* Add @MonkeyWrench: prefix.

* Ensure that we do set the build env in jenkins/run-tests.sh

* Do not mix Wrench with Jenkins. The reports in jenkins can be Xml, in Wrench we prefer the old style.

* Ensure that the main node of the unit tests does contain the target, that will improve the tests results reporting.

* Revert "Fix binding project LinkWithAttributes generation to prevent rebuilds" (#1018)

* Added xslt to be used to keep the old Test Reports until we move to only Jenkins reports.

* Add an extra log for the xslt transformation.

* Point to the correcto dir in jenkins.

* Deal with the xslt once we have finished rather than in a batch.

* Remove noise.

* Readd case removed in rebase.

* Fix indentation.

* Skip lock keychain.
2016-11-15 19:04:37 +01:00
Rolf Bjarne Kvinge 816fca0fa1 [xharness] Show better log names. 2016-11-14 14:47:23 +01:00
Rolf Bjarne Kvinge 5ef045d764 [xharness] Capture stdout/stderr from simulator apps. (#1116)
And if we have a tty, just show the output directly there. Otherwise capture
it, and store it in log files.
2016-11-04 12:13:20 +01:00
Rolf Bjarne Kvinge b13bbe0dfb [xharness] Detect and report launch failures better. (#1079) 2016-11-02 15:43:55 +01:00
Rolf Bjarne Kvinge d940b592c8 [xharness] Fetch watch crash reports when running watch apps. (#973) 2016-10-11 19:30:11 +02:00
Rolf Bjarne Kvinge 16e36ce163 [xharness] Add support for watchOS Series 2 simulators. (#812) 2016-09-12 10:14:55 -04:00
Sebastien Pouliot 38148c718a Merge branch 'xcode8' 2016-09-09 15:29:37 -04:00
Rolf Bjarne Kvinge a617bee08f [xharness] Crashing is not OK. (#680) 2016-08-26 09:12:44 -04:00
Rolf Bjarne Kvinge 56fc26b26f [xharness] Split the mscorlib/System test run for watchOS into multiple executions. (#564)
* [tests] Implement filtering based on test name to make it possible to run a subset of tests manually.

* [xharness] Add support for passing environment variables to test apps.

* [xharness] Split the mscorlib/System test run for watchOS into multiple executions.

When running on a watch, the complete set of mscorlib and System tests use too
much memory, so they end up crashing the app.

So instead don't run all the tests in the same test run, but
instead split them up.

This splits the System tests in 5 different sets, based on the first
character of the test class name.

The mscorlib tests are split in 26 different sets, one for each
character (A-Z).
2016-08-05 22:28:13 +02:00
Rolf Bjarne Kvinge 9f3d438169 [xharness] Attach a native debugger when running watchOS tests on device. (#560)
Attaching a native debugger prevents the watch from backgrounding
the app, and makes the test run able to complete without having
to babysit it.
2016-08-05 21:03:56 +02:00
Rolf Bjarne Kvinge 40137dcfb6 [xharness] Don't use variables (isSimulator) before they've been initialized. (#433)
Fixes an issue where we would try to fetch crash logs from device when
running in the simulator.
2016-07-19 14:16:02 -04:00
Rolf Bjarne Kvinge ea9cfe533c [xharness] Don't use variables (isSimulator) before they've been initialized. (#397)
Fixes an issue where we would try to fetch crash logs from device when
running in the simulator.
2016-07-14 15:31:55 -04:00
Rolf Bjarne Kvinge 2be5478669 [xharness] Mark timed out runs as timed out. 2016-07-14 19:23:02 +02:00
Rolf Bjarne Kvinge 74312ec77c [xharness] Collect and report crash reports for Xamarin.Mac tests. (#316) 2016-06-29 09:21:03 -07:00
Rolf Bjarne Kvinge cc8a1bd07b [xharness] Fix boolean logic for skipping simulator setup. (#305) 2016-06-28 13:34:29 -04:00
Rolf Bjarne Kvinge 85d94face2 [xharness] Improve logging.
Make sure as much as possible is written to the logs, and not stdout.

Also copy an extra 1024 bytes when fetching the system log (and continue
capturing a while after stopped, since there may be unflushed system log
data in memory).
2016-06-28 13:04:52 +02:00
Rolf Bjarne Kvinge c355cf91be [xharness] Refactor how we do simulator configuration.
Split out the code to prepare the simulator from the AppRunner class,
which is now just handling the logic required for each test run.

This way it's easier to handle simulator preparation for multiple
test runs with the same simulator.

Also revamp logging to avoid printing directly to the console, but
instead use the logging classes that permit redirecting logging
to a file. This makes the html report show better logging.
2016-06-28 13:04:47 +02:00
Rolf Bjarne Kvinge 1a48c36efd [xharness] When capturing the system log for simulator runs, don't capture contents of the log from before our test run starts. 2016-06-28 13:02:12 +02:00
Rolf Bjarne Kvinge fa33176ba8 [xharness] Cleanup must be done by the last test, not the first test. 2016-06-28 13:02:09 +02:00
Rolf Bjarne Kvinge 93f0b92eac [xharness] iPhone 4s doesn't exist anymore, use iPhone 5 instead. 2016-06-28 13:02:03 +02:00