Commit Graph

16 Commits

Author SHA1 Message Date
Javier Calvarro Nelson 4b3054265e
[Blazor] Reliability improvements for the E2E tests (#15320) 2019-10-24 18:59:07 +02:00
Javier Calvarro Nelson 19718f6011 [Blazor][Fixes #15155] Clarifies the message to turn on detailed erro… (#15156)
Fixes https://github.com/aspnet/AspNetCore/issues/15155
2019-10-18 13:03:52 -07:00
Doug Bunting 0079423514
Merge branch 'release/3.0' => 'release/3.1' (#13821) 2019-09-11 14:23:59 -07:00
Javier Calvarro Nelson df771dbf43
[Blazor] Cleans up infrastructure used for tests (#13515)
* Removes unnecessary test projects.
* Add a sample project to quickly test changes.
* Breaks off tests based on multiple startups.
* Unifies assertions across tests.
* Captures all logs on test failures.
2019-09-11 15:15:50 +02:00
Steve Sanderson 158d3f1c23
Unflake ComponentLifecycleMethodThrowsExceptionTerminatesTheCircuit test (#13824) 2019-09-09 13:30:44 +01:00
Ryan Nowak be2a71855b Improve reliability of reliability tests
Fixes: #13086

- Fixed some wrong logging (wrong EventIds)
- Added a base class for ignitor tests
- Centralized code for capturing data in ignitor
- Make `WaitForXyz` methods return the thing they found
- Make `WaitForXyz` methods report logs on timeout
- Fix synchronization problems with some tests
- Split invalid event tests into their own class for code reuse

The main thing here is that some of the JS interop reliability tests had
causality/synchronization problems. They were either not waiting for a
render batch, or they were not *triggering* a render batch.

In addition to that, I did a general consolidation of the infrastructure
for these tests to make sure that they are all using the same set of
practices. I found and fixed cases where tests were using timeouts that
were too small (inconsistency) or where they were using non-threadsafe
data structures (these tests always involve concurrency).
2019-08-19 15:31:43 -07:00
Javier Calvarro Nelson 74b801506b
[Blazor] Enables the client to initiate blazor server-side renders (#13147)
* [Blazor] Allows multiple components as entry points
* Removes all overloads that register a component statically with aborts
  selector.
* Updates render component to have a RenderMode parameter that indicates
  how the component must render. Valid values are Static, Server, and
  ServerPrerendered.
* When using Server or ServerPrerendered we emit marker comments into
  the page that are later used by blazor.server.js to bootrstrap a
  blazor server-side application.
2019-08-17 20:44:59 +02:00
Ryan Nowak aafb0813e6 Rename DOM types and change namespace
Fixes: #12553

This change renames all of our browser/DOM specific types from
`UIFooEventArgs` to `FooEventArgs` and puts the in the `.Web` namespace.

In addition to this, we're moving `EventHandlers` and `BindAttributes`
to the same. This has the impact of scoping the mappings those classes
provide based on the `.Web` namespace.

This means that we now expect `.Web` to be present as a using in
basically all contexts for a browser-based Blazor app. Updated
templates, samples and tests. I'll also need to update about a million
tests in the compiler codebase.

I've logged https://github.com/aspnet/AspNetCore.Docs/issues/13832 to
track the docs and release notes part of this work.
2019-08-16 14:34:34 -07:00
Ryan Nowak 3b51b55176 Create CircuitSecret
Fixes: #13012

This change introduces a circuit id 'secret' as the concept that's used when
doing handshaking between the client and the server, and makes CircuitId
(visible to user-code) a separate concept (not a secret, can't be used
to open a connection).

The scope of this grew once I realized that we probably shouldn't be
logging Circuit Secret in so many places, we should be logging CircuitId
as the piece of data we use for correlation, and try to keep the secret
out of logs except where really necessary (and with trace level).

I ended up creating a new type to represent the combination of the
circuit id and secret and prevent
accidental misuse, and then chased down all of the build errors.

As an extra detail, the circuit id is part of the data-protected payload
that's used as the secret. This way we can always get the id back from
the secret without any external storage.
2019-08-16 08:19:38 -07:00
Ryan Nowak 7f054152db Move public rendering types to .RenderTree
Fixes: #12552

We're not documenting these types for public use in this release. We
already have an analyzer implemented to chase you away from taking a
dependency.
2019-08-15 20:14:59 -07:00
Javier Calvarro Nelson 74c09470c6
[Blazor][Fixes #12056] Avoid producing warnings for bad inputs.
* Does not produce warnings when receiving invalid event arguments.
* Does not produce warnings when receiving an invalid event handler id.
* Does not produce warnings when receiving an ack for an unknown batch.
2019-08-14 13:01:53 +02:00
Ryan Nowak 18f5ec71ed Terminate circuit on error
Fixes: #11845

See: https://github.com/aspnet/AspNetCore/pull/12857 for detailed notes.
2019-08-11 10:49:14 -07:00
Steve Sanderson d716ca9d62
Remove .Web IVTs and refactor. Fixes #12713 (#12967)
* Remove IVTs from Microsoft.AspNetCore.Components.Web to .Blazor/.Server

* Eliminate RendererRegistry from .Web, as it's not needed for server-side Blazor

* Reintroduce RendererRegistry as a WebAssembly-specific concept. Refactor event data parsing.

* Remove redundant guard

* Corresponding test updates

* Update ref sources

* CR: Remove renderer ID fully from server-side Blazor code

* CR: Make WebEventData internal and shared-source

* Hub test updates

* Clean whitespace

* Update binaries

* Regenerate binaries AGAIN

* Update Jest test

* CR: Replace constructor with static parse

* Yet again attempt to refresh the .js binaries

* Fix ref assembly

* Fix test
2019-08-09 00:03:40 +01:00
Ryan Nowak d52d7e3284
Harden StartCircuit (#12825)
* Harden StartCircuit

Fixes: #12057

Adds some upfront argument validation as well as error handling for
circuit intialization failures.
2019-08-02 20:35:29 -07:00
Ryan Nowak 9b888e9df5
Blazor API Review: IUriHelper (#12425)
* Rename IUriHelper -> NavigationManager

- Remove IUriHelper interface
- Rename to NavigationManager
- Remove all traces of old naming

There's no functional or design change in this commit - just removing
all traces of the old name. The next few iterations will try to improve
the design.

* Minor API tweaks to NavigationManager

Making Initialize protected causes problems because right now the
server-side code needs to deal with one of two different
implementations, hence an exchange type is used. I followed the same
pattern that was used for auth for symmetry but I have some *cool*
thoughts.

- We can remove this when we remove stateful prerendering
- I have another idea to banish this pattern to the land of wind and
ghosts

If this ends up sticking around longer than a week in the code, lets
discuss other ideas and try to improve the pattern.

* Use hub method for server-side navigation

* Get rid of async local

* Add hub method test

* Misc bikeshedding

* Update src/Components/Server/src/Circuits/DefaultCircuitFactory.cs

Co-Authored-By: campersau <buchholz.bastian@googlemail.com>

* PR feedback
2019-08-01 17:11:09 -07:00
Javier Calvarro Nelson 4bbfd4dd0a
[Blazor][Fixes #12054] ComponentHub reliability improvements. (#12316)
* [Blazor][Fixes #12054] ComponentHub reliability improvements.
* Validates StartCircuit is called once per circuit.
* NOOPs when other hub methods are called before start circuit and
  returns an error to the client.
2019-07-19 15:00:03 +02:00