Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Conversation

@hughbe
Copy link

@hughbe hughbe commented May 17, 2017

Contributes to #13618

I've baselined all the managed failures instead of trying to fix them in this PR - there are just too many!

I'm sure this will give me plenty of work to do after this PR. Considering that there's been some discussion of the risk of my fixes recently, I'm going to invest in more comprehensive testing, followed by targetted fixes

@stephentoub @Priya91 @davidsh

@hughbe hughbe changed the title Httplistener response tests Add HttpListenerResponse tests May 17, 2017
@stephentoub
Copy link
Member

I'm going to invest in more comprehensive testing, followed by targetted fixes

That's excellent. Thanks, @hughbe!

int bytesReceived = Client.Receive(buffer);
Assert.True(bytesReceived < buffer.Length, "Buffer should hold enough space to hold the response from the server.");

return Encoding.UTF8.GetString(buffer, 0, bytesReceived);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This method has inherent race conditions. Receive won't guarantee that it'll receive everything sent by the server. Assuming the server closes the connection, it really needs to repeatedly receive until it gets back 0, indicating that it won't get any more (or if the connection isn't getting closed, it needs to follow the HTTP spec for determining when content for the request is done, e.g. based on Content-Length or chunked transfers). I think you're better off going back to using HttpClient, and then using ReadAsStringAsync on the response.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The reason why I went with Socket instead of HttpClient is because HttpClient doesn't seem to read some of the headers that are sent back from the HttpListener - this could be because they are invalid, for example. Socket allows me to actually verify we send what we expect. HttpClient simply sets headers it doesn't like to null, for example.

I thought that doing synchronous writes and reads would avoid this issue - I can look into using HttpClient again, but it'd be nice to have some kind of way to read the exact response from the server.

Copy link
Member

@stephentoub stephentoub May 17, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought that doing synchronous writes and reads would avoid this issue

Doesn't matter whether they're synchronous or asynchronous. There's still no guarantee you'll read the entire response in one call. In practice, given the small size of these buffers, you're likely to, but it's a recipe for spurious failures happening here and there in CI.

it'd be nice to have some kind of way to read the exact response from the server.

You can use a socket, you'll just need to either:
a) ensure that the HttpListener is closing the connection such that the client can read to the end, and then you can either loop until Receive returns 0, or wrap the socket in a NetworkStream and Read from it until that returns 0 or use its CopyTo or wrap that in a StreamReader and use ReadToEnd
b) know exactly how many bytes you're sending back and read until you get that exact amount
c) implement a more HTTP-protocol aware mechanism, which you don't want to have to do

Copy link

@CIPop CIPop May 18, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hughbe please try to reuse HttpsTestClient if custom HTTP client processing is required.

if (value == null)
{
throw new ArgumentNullException(nameof(value));
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was this necessary? Doesn't both the desktop and the Windows implementation null ref in the same situation? At this point let's avoid making unnecessary behavioral changes like this. We should stick to only adding tests that pass on Windows and then fixing the managed implementation to pass. If we find bad bugs in the Windows implementation as well, we could look to fix those, but this wouldn't count as a bad bug.

if (templateResponse == null)
{
throw new ArgumentNullException(nameof(templateResponse));
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto

@stephentoub
Copy link
Member

Great set of tests, @hughbe. It looks good. Let's undo the product changes you made (unless I'm missing something) and fix up the get response method in the tests, and then I think it should be good to go.

Client.Send(Factory.GetContent(httpVersion, "POST", null, "Give me a context, please", null, headerOnly: false));
HttpListenerContext context = await Factory.GetListener().GetContextAsync();
return context.Response;
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow! You wrote a lot of tests here!

:) Still this file is way too big. Please split into separate classes of tests.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's the sort of testing we need to be confident we're not breaking the managed implementation!
I thought the testing guidelines are file per class? I'm happy to break up the tests though - is this because you're concerned about test execution time and want the test classes to run in parallel?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought the testing guidelines are file per class? I'm happy to break up the tests though - is this because you're concerned about test execution time and want the test classes to run in parallel?

Take a look at HttpClient tests.
https://github.com/dotnet/corefx/tree/master/src/System.Net.Http/tests/FunctionalTests

There are several files such as HttpClientHandlerTest.cs, HttpClientHandlerTest.DefaultProxyCredentials.cs etc.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's the sort of testing we need to be confident we're not breaking the managed implementation!

Yup: thanks a lot for writing these!

I'm happy to break up the tests though - is this because you're concerned about test execution time and want the test classes to run in parallel?

No, it's just that in general, it's bad practice to have a single huge class in a single huge file.

public class HttpListenerResponseTests : IDisposable
{
private HttpListenerFactory Factory { get; }
private HttpClient Client { get; }
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I actually like the fact we're using HttpClient: we should continue to do so to ensure that the client/server stacks can communicate with themselves. (It's less interesting that a custom test client can achieve the same thing.)

That said, you could duplicate all tests here into another file to the granular control through a Socket and a custom HTTP test server.

@davidsh davidsh removed their assignment May 18, 2017
// The managed implementation should set ContentType directly in the headers instead of tracking it with its own field.
// The managed implementation should trim the value.
[ActiveIssue(18128, TestPlatforms.AnyUnix)]
public async Task ContentType_SetAndSend_Success(string contentType)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hughbe Would it be better to file separate issues for identified similar compat differences? In this case filing a separate bug saying that response headers require additional validation and stored in place. So that work can be done incrementally and also distributed in case you are otherwise occupied. Linking all to a single issue doesn't give a clear picture of how much work is still left before one can call the umbrella issue done.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, done

Copy link
Contributor

@Priya91 Priya91 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for adding the tests and helping out in shipping good quality software!

@karelz karelz modified the milestone: 2.1.0 May 19, 2017
@hughbe
Copy link
Author

hughbe commented May 19, 2017

By the way can we hold off merging this until I push another commit - I noticed that a test randomly failed so there is a race condition at play that Stephen mentioned.

Examples:

CloseResponseEntity_ChunkedSentHeaders_DoesNotModifyContentLength(willB lock: True) Assert.EndsWith() Failure: Expected: 5 Hello 1 a 0
    Actual:   ···GMT

    5
    Hello
    1
    a
CopyFrom_AllValues_ReturnsClone
    System.Net.HttpListenerException : An operation was attempted on a nonexistent network connection
    Stack Trace:
          at System.Net.HttpResponseStream.WriteCore(Byte[] buffer, Int32 offset, Int32 size)
          at System.Net.HttpResponseStream.Write(Byte[] buffer, Int32 offset, Int32 size)
          at System.Net.Tests.HttpListenerResponseTests.<CopyFrom_AllValues_ReturnsClone>d__0.MoveNext()
CloseResponseEntity_NotChunkedSentHeaders_SendsEntityWithoutModifyingContentLength
System.Net.Sockets.SocketException : An existing connection was forcibly closed by the remote host
        Stack Trace:
              at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
              at System.Net.Sockets.Socket.Receive(Byte[] buffer)
              at System.Net.Tests.HttpListenerResponseTestBase.GetClientResponse()
              at System.Net.Tests.HttpListenerResponseTests.<CloseResponseEntity_NotChunkedSentHeaders_SendsEntityWitho
  utModifyingContentLength>d__9.MoveNext()
           --- End of stack trace from previous location where exception was thrown ---
              at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
              at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
           --- End of stack trace from previous location where exception was thrown ---
              at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
              at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
           --- End of stack trace from previous location where exception was thrown ---
              at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
              at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
CloseResponseEntity_ChunkedNotSentHeaders_ModifiesContentLength
Assert.EndsWith() Failure:
        Expected:
        1
        a
        0


        Actual:   ···GMT

        1
        a

Copy link

@CIPop CIPop left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a few review comments that are now hidden by the recent changes.

In summary:

  1. I think we should reuse existing HTTP test client code instead of creating then stabilizing a new version.
  2. In general, if GitHub believes that a file is too large to render, the file should be split for easier readability, encapsulation, etc.

@CIPop CIPop removed their assignment May 19, 2017
@hughbe
Copy link
Author

hughbe commented May 20, 2017

@CIPop I could not get HttpsTestClient to work for several reasons:

  • it crashes with a CryptographigException on load
  • it uses https which I'm not sure works on managed
  • it immediately writes to the server then waits for a response: we need to add callbacks in order to get a context for the HttpListener: the tests hang without that
  • it doesn't return any response, it just verifies that a response occurs

I went with stephen's second suggestion about hardcoding the byte length to avoid having to rearchitecture HttpsTestClient

@CIPop
Copy link

CIPop commented May 20, 2017

I could not get HttpsTestClient to work for several reasons

HttpsTestClient is currently supporting only HTTPS connections but it can be refactored to support non-HTTPS, multiple callbacks, etc.
I'd prefer if we could unify the implementation in the future but I see what you mean now: it's not that simple.

Copy link

@CIPop CIPop left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @hughbe for your work and the extra tests!
Please ensure that all InnerLoop tests pass.

Also, use the @dotnet-bot help to find out how to run all the OuterLoop tests before we can merge this in order to avoid test failures in the daily runs (most of the network tests are disabled in Inner).

@hughbe
Copy link
Author

hughbe commented May 20, 2017

@dotnet-bot help

@dotnet-bot
Copy link

Welcome to the dotnet/corefx Repository

The following is a list of valid commands on this PR. To invoke a command, comment the indicated phrase on the PR

The following commands are valid for all PRs and repositories.

Click to expand
Comment Phrase Action
@dotnet-bot test this please Re-run all legs. Use sparingly
@dotnet-bot test ci please Generates (but does not run) jobs based on changes to the groovy job definitions in this branch
@dotnet-bot help Print this help message

The following jobs are launched by default for each PR against dotnet/corefx:master.

Click to expand
Comment Phrase Job Launched
@dotnet-bot test Windows_NT Debug AllConfigurations Build Windows_NT Debug AllConfigurations Build
@dotnet-bot test Innerloop CentOS7.1 Debug x64 Build and Test Innerloop CentOS7.1 Debug x64 Build and Test
@dotnet-bot test Innerloop CentOS7.1 Release x64 Build and Test Innerloop CentOS7.1 Release x64 Build and Test
@dotnet-bot test Innerloop netfx Windows_NT Debug x86 Build and Test Innerloop netfx Windows_NT Debug x86 Build and Test
@dotnet-bot test Innerloop netfx Windows_NT Release x64 Build and Test Innerloop netfx Windows_NT Release x64 Build and Test
@dotnet-bot test Innerloop OSX10.12 Debug x64 Build and Test Innerloop OSX10.12 Debug x64 Build and Test
@dotnet-bot test Innerloop OSX10.12 Release x64 Build and Test Innerloop OSX10.12 Release x64 Build and Test
@dotnet-bot test Innerloop PortableLinux Debug x64 Build and Test Innerloop PortableLinux Debug x64 Build and Test
@dotnet-bot test Innerloop PortableLinux Release x64 Build and Test Innerloop PortableLinux Release x64 Build and Test
@dotnet-bot test Innerloop Tizen armel Debug Cross Build Innerloop Tizen armel Debug Cross Build
@dotnet-bot test Innerloop Tizen armel Release Cross Build Innerloop Tizen armel Release Cross Build
@dotnet-bot test Vertical uap Build Vertical uap Build
@dotnet-bot test Vertical uapaot Build Vertical uapaot Build
@dotnet-bot test Innerloop Ubuntu14.04 arm Release Cross Build Innerloop Ubuntu14.04 arm Release Cross Build
@dotnet-bot test Innerloop Ubuntu14.04 Debug x64 Build and Test Innerloop Ubuntu14.04 Debug x64 Build and Test
@dotnet-bot test Innerloop Ubuntu14.04 Release x64 Build and Test Innerloop Ubuntu14.04 Release x64 Build and Test
@dotnet-bot test Innerloop Ubuntu16.04 arm Debug Cross Build Innerloop Ubuntu16.04 arm Debug Cross Build
@dotnet-bot test Innerloop Windows_NT Debug x86 Build and Test Innerloop Windows_NT Debug x86 Build and Test
@dotnet-bot test Innerloop Windows_NT Release x64 Build and Test Innerloop Windows_NT Release x64 Build and Test

The following optional jobs are available in PRs against dotnet/corefx:master.

Click to expand
Comment Phrase Job Launched
@dotnet-bot test code coverage Queues Code Coverage Windows Debug
@dotnet-bot test innerloop Debian8.4 Debug Queues Innerloop Debian8.4 Debug x64 Build and Test
@dotnet-bot test innerloop Debian8.4 Release Queues Innerloop Debian8.4 Release x64 Build and Test
@dotnet-bot test innerloop Fedora24 Debug Queues Innerloop Fedora24 Debug x64 Build and Test
@dotnet-bot test innerloop Fedora24 Release Queues Innerloop Fedora24 Release x64 Build and Test
@dotnet-bot test code formatter check Queues Code Formatter Check
@dotnet-bot test innerloop OpenSUSE13.2 Debug Queues Innerloop OpenSUSE13.2 Debug x64 Build and Test
@dotnet-bot test innerloop OpenSUSE13.2 Release Queues Innerloop OpenSUSE13.2 Release x64 Build and Test
@dotnet-bot test innerloop OpenSUSE42.1 Debug Queues Innerloop OpenSUSE42.1 Debug x64 Build and Test
@dotnet-bot test innerloop OpenSUSE42.1 Release Queues Innerloop OpenSUSE42.1 Release x64 Build and Test
@dotnet-bot test outerloop netcoreapp CentOS7.1 Debug Queues OuterLoop netcoreapp CentOS7.1 Debug x64
@dotnet-bot test outerloop netcoreapp CentOS7.1 Release Queues OuterLoop netcoreapp CentOS7.1 Release x64
@dotnet-bot test outerloop netcoreapp Debian8.4 Debug Queues OuterLoop netcoreapp Debian8.4 Debug x64
@dotnet-bot test outerloop netcoreapp Debian8.4 Release Queues OuterLoop netcoreapp Debian8.4 Release x64
@dotnet-bot test outerloop netcoreapp Fedora24 Debug Queues OuterLoop netcoreapp Fedora24 Debug x64
@dotnet-bot test outerloop netcoreapp Fedora24 Release Queues OuterLoop netcoreapp Fedora24 Release x64
@dotnet-bot test outerloop netcoreapp OpenSUSE13.2 Debug Queues OuterLoop netcoreapp OpenSUSE13.2 Debug x64
@dotnet-bot test outerloop netcoreapp OpenSUSE13.2 Release Queues OuterLoop netcoreapp OpenSUSE13.2 Release x64
@dotnet-bot test outerloop netcoreapp OpenSUSE42.1 Debug Queues OuterLoop netcoreapp OpenSUSE42.1 Debug x64
@dotnet-bot test outerloop netcoreapp OpenSUSE42.1 Release Queues OuterLoop netcoreapp OpenSUSE42.1 Release x64
@dotnet-bot test outerloop netcoreapp OSX10.12 Debug Queues OuterLoop netcoreapp OSX10.12 Debug x64
@dotnet-bot test outerloop netcoreapp OSX10.12 Release Queues OuterLoop netcoreapp OSX10.12 Release x64
@dotnet-bot test outerloop netcoreapp PortableLinux Debug Queues OuterLoop netcoreapp PortableLinux Debug x64
@dotnet-bot test outerloop netcoreapp PortableLinux Release Queues OuterLoop netcoreapp PortableLinux Release x64
@dotnet-bot test outerloop netcoreapp RHEL7.2 Debug Queues OuterLoop netcoreapp RHEL7.2 Debug x64
@dotnet-bot test outerloop netcoreapp RHEL7.2 Release Queues OuterLoop netcoreapp RHEL7.2 Release x64
@dotnet-bot test outerloop netcoreapp Ubuntu14.04 Debug Queues OuterLoop netcoreapp Ubuntu14.04 Debug x64
@dotnet-bot test outerloop netcoreapp Ubuntu14.04 Release Queues OuterLoop netcoreapp Ubuntu14.04 Release x64
@dotnet-bot test outerloop netcoreapp Ubuntu16.04 Debug Queues OuterLoop netcoreapp Ubuntu16.04 Debug x64
@dotnet-bot test outerloop netcoreapp Ubuntu16.04 Release Queues OuterLoop netcoreapp Ubuntu16.04 Release x64
@dotnet-bot test outerloop netcoreapp Ubuntu16.10 Debug Queues OuterLoop netcoreapp Ubuntu16.10 Debug x64
@dotnet-bot test outerloop netcoreapp Ubuntu16.10 Release Queues OuterLoop netcoreapp Ubuntu16.10 Release x64
@dotnet-bot test outerloop netcoreapp Windows 10 Debug Queues OuterLoop netcoreapp Windows 10 Debug x64
@dotnet-bot test outerloop netcoreapp Windows 10 Release Queues OuterLoop netcoreapp Windows 10 Release x64
@dotnet-bot test outerloop netcoreapp Windows 7 Debug Queues OuterLoop netcoreapp Windows 7 Debug x64
@dotnet-bot test outerloop netcoreapp Windows 7 Release Queues OuterLoop netcoreapp Windows 7 Release x64
@dotnet-bot test outerloop netcoreapp Windows_NT Debug Queues OuterLoop netcoreapp Windows_NT Debug x64
@dotnet-bot test outerloop netcoreapp Windows_NT Release Queues OuterLoop netcoreapp Windows_NT Release x64
@dotnet-bot test outerloop netfx Windows_NT Debug Queues OuterLoop netfx Windows_NT Debug x64
@dotnet-bot test outerloop netfx Windows_NT Release Queues OuterLoop netfx Windows_NT Release x64
@dotnet-bot test outerloop Windows Nano 2016 Debug Queues OuterLoop Windows Nano 2016 Debug
@dotnet-bot test outerloop Windows Nano 2016 Release Queues OuterLoop Windows Nano 2016 Release
@dotnet-bot test innerloop RHEL7.2 Debug Queues Innerloop RHEL7.2 Debug x64 Build and Test
@dotnet-bot test innerloop RHEL7.2 Release Queues Innerloop RHEL7.2 Release x64 Build and Test
@dotnet-bot test innerloop Ubuntu14.04 arm Debug Queues Innerloop Ubuntu14.04 arm Debug Cross Build
@dotnet-bot test innerloop Ubuntu16.04 arm Release Queues Innerloop Ubuntu16.04 arm Release Cross Build
@dotnet-bot test innerloop Ubuntu16.04 Debug Queues Innerloop Ubuntu16.04 Debug x64 Build and Test
@dotnet-bot test innerloop Ubuntu16.04 Release Queues Innerloop Ubuntu16.04 Release x64 Build and Test
@dotnet-bot test innerloop Ubuntu16.10 Debug Queues Innerloop Ubuntu16.10 Debug x64 Build and Test
@dotnet-bot test innerloop Ubuntu16.10 Release Queues Innerloop Ubuntu16.10 Release x64 Build and Test

Have a nice day!

@hughbe
Copy link
Author

hughbe commented May 20, 2017

@dotnet-bot test outerloop netcoreapp Ubuntu16.10 Debug
@dotnet-bot test outerloop Windows Nano 2016 Debug
@dotnet-bot test outerloop netcoreapp Windows_NT Debug
@dotnet-bot test outerloop netcoreapp Windows 7 Debug
@dotnet-bot test outerloop netcoreapp OSX10.12 Debug
@dotnet-bot test outerloop netcoreapp PortableLinux Debug
@dotnet-bot test Innerloop CentOS7.1 Release x64 Build and Test

@hughbe
Copy link
Author

hughbe commented May 21, 2017

@dotnet-bot test outerloop netcoreapp Windows 7 Debug

hughbe added 7 commits May 22, 2017 08:44
- Remove added argument validation
- Split up tests
- Start to investigate fixing race conditions in the tests (this isn't
done yet)
Fixes failures when I stress test the suit by running the tests 100
times
…instead of ActiveIssue

This lets me simulate being on a managed environment on Windows so I can
iterate more rapidly
{
// Most of the time, the Socket can read the content send after calling Close(byte[], bool), but
// occassionally this test fails as the HttpListenerResponse closes before the Socket can receive all
// content. If this happens, just ignore the failure and carry on.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is in both the Windows and managed implementation, or just the managed one? This sounds like a bug. It should be possible for the server to close the connection and still have the client receive all of the data sent before that, assuming the server is doing a proper shutdown of the connection.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I ran the tests several hundred times on Windows - this failed intermittently. Haven't had the chace to test with the managed implementation

Copy link
Member

@stephentoub stephentoub left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your good work on this, @hughbe. Let's get this merged, and then we can follow-up to address any subsequent issues.

@stephentoub
Copy link
Member

@dotnet-bot test outerloop netcoreapp Ubuntu16.10 Debug
@dotnet-bot test outerloop Windows Nano 2016 Debug
@dotnet-bot test outerloop netcoreapp Windows_NT Debug
@dotnet-bot test outerloop netcoreapp Windows 7 Debug
@dotnet-bot test outerloop netcoreapp OSX10.12 Debug
@dotnet-bot test outerloop netcoreapp PortableLinux Debug
@dotnet-bot test Innerloop CentOS7.1 Release x64 Build and Test
@dotnet-bot test outerloop netcoreapp Windows 7 Debug

@stephentoub
Copy link
Member

@hughbe, it looks like the outerloop Windows runs are hanging in the HttpListener tests.

@stephentoub
Copy link
Member

(though it looks like it may be one of the already checked in tests rather than one you've added here)

@hughbe
Copy link
Author

hughbe commented May 22, 2017

Oof. Is it only Windows 7? How can you tell which test is hanging by the way?

@stephentoub
Copy link
Member

Oof. Is it only Windows 7? How can you tell which test is hanging by the way?

Looks like it's both 7 and 8. Can't tell which is hanging from the logs, but I see the master runs hanging as well, which would suggest there's a checked in test that's hanging.

@stephentoub
Copy link
Member

(I'm setting up a Win7 VM to see if I can figure out what's going wrong.)

@stephentoub
Copy link
Member

@dotnet-bot test outerloop netcoreapp Windows_NT Debug
@dotnet-bot test outerloop netcoreapp Windows 7 Debug

@stephentoub
Copy link
Member

@mmitche, @danmosemsft, the Nano job failed with:

com.cloudbees.plugins.flow.JobNotFoundException: Item dotnet_corefx/master/outerloop_winnano16_debug_tst_prtest not found (or isn't a job).

Is that expected? Is this the wrong job to run for Nano?

@mmitche
Copy link
Member

mmitche commented May 22, 2017

@stephentoub Run the new pipelines:

@dotnet-bot test portable windows debug pipeline
@dotnet-bot test portable windows release pipeline

@stephentoub
Copy link
Member

@mmitche, does that mean the run wasn't supposed to work? If so, can you please update the help message from dotnet-bot that explicitly lists it as valid?

@mmitche
Copy link
Member

mmitche commented May 22, 2017

@stephentoub I thought it was removed from the file altogether. I'll fix that.

@stephentoub
Copy link
Member

Thanks. And these portable Windows runs are on Nano?

@mmitche
Copy link
Member

mmitche commented May 22, 2017

@stephentoub They run on all the targeted windows portable platforms (nano, 10, 7, etc.). As of right now since the submission is part of the build, you can't select just one target platform to test on.

@stephentoub
Copy link
Member

@mmitche, ok. And it's outerloop, right?

@mmitche
Copy link
Member

mmitche commented May 22, 2017

@stephentoub No. It's coded today but there isn't a trigger for it. Want me to add that?

@stephentoub
Copy link
Member

Want me to add that?

Yes, please.

@stephentoub
Copy link
Member

I'm going to merge this; after #20104 was merged, the legs that previously hung now pass.

@stephentoub stephentoub merged commit bbb63de into dotnet:master May 22, 2017
@hughbe hughbe deleted the httplistener-response-tests branch May 23, 2017 00:57
stephentoub pushed a commit to stephentoub/corefx that referenced this pull request May 29, 2017
* Add HttpListenerResponse tests

* Baseline all the managed test failures

* Preliminary PR feedback

- Remove added argument validation
- Split up tests
- Start to investigate fixing race conditions in the tests (this isn't
done yet)

* Baseline all HttpListener disabled tests on Unix

* Use exact number of bytes to avoid race conditions

Fixes failures when I stress test the suit by running the tests 100
times

* Fix interminate test failures discovered by running the tests 100 times

* Fix managed test failures and use overridable ConditionalFact/Theory instead of ActiveIssue

This lets me simulate being on a managed environment on Windows so I can
iterate more rapidly

* Fix Windows 7 outerloop tests
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants