{"push_id":774239820,"size":163,"distinct_size":163,"ref":"refs/heads/master","head":"f0fce5393e81186a0af661520708b05c85a8c22f","before":"5a25cf9ba7a6a9bddd9831f38e4425af7e2bd186","commits":[{"sha":"4981e64073dadeebe1b9a637ba69cb1effb94ec0","author":{"email":"69a47d9190b00e88484370f7bdccd9173c9239da@justinvp.com","name":"Justin Van Patten"},"message":"Avoid enumerator allocations\n\nThere are many places where ObjectCollection<T> is enumerated\ninternally. This change avoids the enumerator allocation by using\na struct enumerator (internal-only).","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/4981e64073dadeebe1b9a637ba69cb1effb94ec0"},{"sha":"82dbecf9e081eaa3532d66055386b28ee970a608","author":{"email":"4a5659cad41d1147af30d97cb39599a025a3e412@live.com.au","name":"Bruce Bowyer-Smyth"},"message":"Avoid StringBuilder creation for every response header, remove ToUpperInvariant allocation","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/82dbecf9e081eaa3532d66055386b28ee970a608"},{"sha":"a9a1b5ea1ca7b5e1970861df9386b5f97d30646e","author":{"email":"1a73af9e7ae00182733b2292511b814be66f065f@wmf2wpf.com","name":"Bruce Bowyer-Smyth"},"message":"Use StringBuilder(string) constructor","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/a9a1b5ea1ca7b5e1970861df9386b5f97d30646e"},{"sha":"a75896bd169b6481543d1a99d9d110a1c0339987","author":{"email":"69a47d9190b00e88484370f7bdccd9173c9239da@justinvp.com","name":"Justin Van Patten"},"message":"Optimize HttpMethod.GetHashCode()\n\n- Avoid unnecessary allocations associated with the use of\nToUpperInvariant().\n- Update tests to be more explicit about the ToUpperInvariant()\nbehavior.\n- Minor cleanup (readonly field, remove unused usings & trailing\nwhitespace).","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/a75896bd169b6481543d1a99d9d110a1c0339987"},{"sha":"34fe3394f31fe65911878df62400704b3f0551e2","author":{"email":"94274d0b635748ad8df96c0fc4f19e1ecd3f67e2@microsoft.com","name":"stephentoub"},"message":"Fix Process TestEnableRaiseEvent race condition\n\nProcess.WaitForExit and the callback invoked when a Process exits both call the RaiseOnExited method, which is implemented like this:\n```C#\nprivate void RaiseOnExited()\n{\n    if (!_raisedOnExited)\n    {\n        lock (this)\n        {\n            if (!_raisedOnExited)\n            {\n                _raisedOnExited = true;\n                OnExited();\n            }\n        }\n    }\n}\n```C#\nBecause _raisedOnExited is set prior to invoking OnExited, if Process.WaitForExit races with the exited callback to invoke RaiseOnExited, WaitForExit may see _raisedOnExited as true even if OnExited hasn't yet been executed or completed execution.  That means there's that when WaitForExit returns, there's no guarantee that the Exited delegate has been invoked, yet the TestEnableRaiseEvents method was relying on that.\n\nThis commit fixes the test to not rely on that, by spinning a bit waiting for the flag to be set.  I also took the opportunity to rewrite the test as a theory to avoid some duplication.\n\nI contemplated changing the RaiseOnExited implementation itself to do:\n```C#\ntry\n{\n    OnExited();\n}\nfinally\n{\n    _raisedOnExited = true;\n}\n```\ninstead of:\n```C#\n_raisedOnExited = true;\nOnExited();\n```\nbut that would potentially make certain deadlock conditions more likely, so I left it as is and changed the test instead.","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/34fe3394f31fe65911878df62400704b3f0551e2"},{"sha":"275f109aa2cd4114f9f33940d37b9d2003425d73","author":{"email":"be3f36b6fbce8d4f7a4d47e3a7c547c7aadb94e3@microsoft.com","name":"Lakshmi Priya Sekar"},"message":"Increase System.Reflection.Emit.ILGeneration test coverage.","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/275f109aa2cd4114f9f33940d37b9d2003425d73"},{"sha":"34648f57f9d32d0ddeac96edb28a581acd80105c","author":{"email":"7ad46df05a100d2857c6f464b254895052d6c792@gmail.com","name":"Dmitry Turin"},"message":"Use `List<T>.ToArray()` instead of `CopyTo()`","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/34648f57f9d32d0ddeac96edb28a581acd80105c"},{"sha":"3f9f1f7df8cf4840bffa9a55e80f80bb81cee539","author":{"email":"44f878afe53efc66b76772bd845eb65944ed8232@hackcraft.net","name":"Jon Hanna"},"message":"Fully import Zip Linq tests from scripted legacy import\n\nConverts the Zip tests imported in 2874 into a more directly XUnit-ian style.","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/3f9f1f7df8cf4840bffa9a55e80f80bb81cee539"},{"sha":"e496e4076b1a309b5759a40a88a87cf319b12137","author":{"email":"44f878afe53efc66b76772bd845eb65944ed8232@hackcraft.net","name":"Jon Hanna"},"message":"Fully import ToArray, ToList and Empty tests from scripted legacy import.\n\nConverts the ToArray, ToList and Empty tests imported in 2874 into a more directly\nXUnit-ian style, and merges them with the existing tests.\n\n‎Of the Empty tests, one was already covered, and the others could be expanded upon.","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/e496e4076b1a309b5759a40a88a87cf319b12137"},{"sha":"c0c4af040eaf483a1f994c2a1d0d455b6bae7cdd","author":{"email":"03c4cb6107ae99956a7681f2c97ff7104809a2bd@microsoft.com","name":"dotnet-bot"},"message":"Add System.Composition source code, update projects to build in corefx","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/c0c4af040eaf483a1f994c2a1d0d455b6bae7cdd"},{"sha":"e40d701d012d911419fe0037f0ec3b76a15b489a","author":{"email":"f90ef09f99d312dfa91c8cb7c0bcd63fecf0834a@microsoft.com","name":"Daniel Plaisted"},"message":"Apply code review feedback for System.Composition\n\n* Use ReaderWriterLockSlim\n* Move duplicated code into common folder\n* Use EmptyArray<T> instead of new T[0]\n* Fix CLS Compliance error in System.Composition test library\n  (See dotnet/roslyn#4293: CLS Compliance warning CS3016 is reported on\n  non-public members)\n* Rename SilverlightTraceWriter.cs to DebuggerTraceWriter.cs\n* Use CommonPath build property to include common files\n* Remove unnecessary AssemblyInfo.cs files\n* Remove unused private constant in System.Composition.AttributedModel","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/e40d701d012d911419fe0037f0ec3b76a15b489a"},{"sha":"77dc3a6e313e20205a4422734037a1f36ac0537a","author":{"email":"44f878afe53efc66b76772bd845eb65944ed8232@hackcraft.net","name":"Jon Hanna"},"message":"Fully import Any and All tests from scripted legacy import.\n\nConvert Any and All tests imported in #2874 into a more directly\nXUnit-ian style.","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/77dc3a6e313e20205a4422734037a1f36ac0537a"},{"sha":"68e06f138a0df98b2bb245ee375f6f10a643a774","author":{"email":"94274d0b635748ad8df96c0fc4f19e1ecd3f67e2@microsoft.com","name":"stephentoub"},"message":"Fix TaskCancelWaitTest to not randomly fail\n\nThis whole set of TaskCancelWait tests is a bit of a mess, and it's not clear exactly what behavior(s) it's trying to test.  That said, this commit is a small tactical fix to address the sporadic failures we've seen in CI.  I was able to repro it only once out of every 4K-5K runs, and only when there was heavy load on the machine.\n\nThe test is using a CountdownEvent to signal when it's done creating all of the tasks in the \"task tree\" (where tasks create other tasks).  The main test thread waits for all of the tasks to be created by waiting on that event.  However, it also tries to enable concurrent cancellation of that tree creation, and as part of that it tries to force the CountdownEvent down to 0.  This is inherently racy, as other tasks could concurrently be trying to Signal the event as well.  In an apparent attempt to \"solve\" this race condition, the test is guarding calls to Signal with calls to IsSet, but that only reduces the window of opportunity for an error.  As such, sporadically one of the tasks will try to Signal the event when it's already 0, causing the task to fault with an exception.  The test results verification is then checking whether the task completed, and is confirming that it either has the expected computed result or was canceled, but isn't factoring in the possibility that the task failed.\n\nThe tactical fix is to just add that check for failure as well (the longer term fix is probably to figure out the intended purpose of this test and either rewrite it or delete it).","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/68e06f138a0df98b2bb245ee375f6f10a643a774"},{"sha":"edda03a3027c3aaee674156fdbbe70f1b4ce27c0","author":{"email":"94274d0b635748ad8df96c0fc4f19e1ecd3f67e2@microsoft.com","name":"stephentoub"},"message":"Fix deadlocks in outer loop task tests\n\nThe TaskRunSyncTests tests are creating a custom TaskScheduler that spins up a bunch of threads, and then when the scheduler is disposed, it prevents additional tasks from being queued, empties the queue of remaining tasks, and waits for its threads to complete (meaning waiting for any currently running tasks to exit).\n\nA few of the TaskRunSyncTests tests are creating tasks that, when executed, create their own scheduler to run a child task on.  This scheduler needs to be disposed (because it's another of these custom TaskSchedulers that needs to be shut down), so a continuation off of the child task is created to dispose of the child scheduler.\n\nThere are a two problems here.\n- By the time this continuation is queued, the parent scheduler may have already had shutdown requested, in which case the continuation can't be queued to it, and the scheduler can't be shutdown.  Fix: Schedule the continuation to the thread pool rather than to the parent scheduler.\n- The child scheduler is being created to target the parent scheduler.  I don't know if that was by design or if it was an accident, but it's a recipe for deadlock if any users of these tests were to run concurrently, as then multiple child schedulers expecting a specific number of workers might get fewer than that.  More importantly, this contributes to the previous issue: because the child scheduler was created on top of the parent, the parent couldn't shut down its threads until the child shut down its threads, but the child didn't know to shut down its threads because the continuation scheduled to the parent couldn't run.  Fix: Have the schedulers always target the thread pool rather than targeting the parent.","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/edda03a3027c3aaee674156fdbbe70f1b4ce27c0"},{"sha":"204da2bc9aa1a7238d346a3afada878d7d245b09","author":{"email":"7ad46df05a100d2857c6f464b254895052d6c792@gmail.com","name":"Dmitry Turin"},"message":"Improve NtProcessManager.GetModuleInfos\n- StringBuilder allocation moved out of loop;\n- Win32Exception will be allocated and thrown only if it should be propagated to the end user.","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/204da2bc9aa1a7238d346a3afada878d7d245b09"},{"sha":"7645db05b80fd8decb079aa21a28a9cc0211d96e","author":{"email":"ccc8574e55bce9b62c50a75e1fb861ac8148b557@gmail.com","name":"Daniel Plaisted"},"message":"Merge pull request #1851 from dsplaisted/AddSystemComposition\n\nAdd System.Composition","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/7645db05b80fd8decb079aa21a28a9cc0211d96e"},{"sha":"bb750e93c44bede29e77cfa42914dc30d6911eb6","author":{"email":"739a474bd15c81d370d4a22ab0cb1db79c7d340b@microsoft.com","name":"Eric Mellino"},"message":"Merge pull request #2923 from stephentoub/fix_taskcancelwait_test\n\nFix TaskCancelWaitTest to not randomly fail","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/bb750e93c44bede29e77cfa42914dc30d6911eb6"},{"sha":"86528ec6e7bdd2adcd338632c413f3da888b7578","author":{"email":"739a474bd15c81d370d4a22ab0cb1db79c7d340b@microsoft.com","name":"Eric Mellino"},"message":"Add basic System.Resources.ResourceManager tests","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/86528ec6e7bdd2adcd338632c413f3da888b7578"},{"sha":"5bb3c35c4881f355c3be59ef921466aba5a57285","author":{"email":"7ad46df05a100d2857c6f464b254895052d6c792@gmail.com","name":"Dmitry Turin"},"message":"Fix erroneous Capacity of StringBuilder passed to interop","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/5bb3c35c4881f355c3be59ef921466aba5a57285"},{"sha":"70eaf996fcb96406e13ae91988b8fc4a52c10cf8","author":{"email":"94274d0b635748ad8df96c0fc4f19e1ecd3f67e2@microsoft.com","name":"Stephen Toub"},"message":"Merge pull request #2900 from stephentoub/fix_process_exited_test\n\nFix Process TestEnableRaiseEvent race condition","distinct":true,"url":"https://api.github.com/repos/lggomez/corefx/commits/70eaf996fcb96406e13ae91988b8fc4a52c10cf8"}]}