Commit Graph

195 Commits

Author SHA1 Message Date
Ryan Nowak 5b8db03a57 Fixing up a few small issues
The instruction matcher was missing a few details, which made it faster
than it should have been. Right now I'm trying to keep the design of
these in sync. Once I fixed that it exposed a legitimate bug that was
blocking the github benchmark.
2018-06-15 18:04:43 -07:00
Ryan Nowak 00e99dbbb2 Flesh out experimental matchers
This change improves this area a bit by consolidating the matcher
implementations between the benchmarks project and the conformance
tests.

Additionally I split the minimal matcher into a really trivial
implementation for the simple tests and a more complex one for the
larger tests. This allows us to keep the plaintext/techempower scenario
in sight while also having a good baseline for the more sophisticated
tests.

Also starting to add tests that verify that matchers behave as expected.

The matchers now successfully execute all of these benchmarks, which
means that they support literals and parameters.

Missing features:
- complex segments
- catchall
- default values
- optional parameters
- constraints
- complex segments with file extensions

This is a good place to iterate a bit more of perf and try to make a
decision about what we want to implement.
2018-06-15 15:43:50 -07:00
Kiran Challa d3ddc1709a Added initial support for link generation when using Dispatcher 2018-06-14 15:31:30 -07:00
James Newton-King 9efa7665c9
Fix endpoint constraint cache (#555) 2018-06-13 16:40:06 +12:00
James Newton-King 28d1bc4fa2
Fix TreeMatcher's use of EndpointSelector (#551) 2018-06-12 15:47:34 +12:00
James Newton-King 84bc8351c9
Initial endpoint constraints functionality (#548) 2018-06-12 09:43:17 +12:00
Ryan Nowak 08f12f2bfd Add sample matcher tests 2018-06-09 13:29:06 -07:00
James Newton-King 1b470f3d3b
Fix Endpoint order in TreeMatcher (#542) 2018-06-08 16:19:56 +12:00
James Newton-King 21f8ce5e95
Initial DispatcherMiddleware tests (#529) 2018-06-07 21:47:06 +12:00
kishan.anem acea87a617 IUrlHelper and support for RouteOptions.LowercaseUrls
changes are made as suggestions.
@rynowak
#518
#Issue:  aspnet/Mvc#7720
2018-05-31 20:07:01 -07:00
kishan.anem cb77c17cf4 TestCase added and IUrlHelper and support for RouteOptions.LowercaseUrls
checked appliesd to the query string.
@rynowak
#518
#Issue:  aspnet/Mvc#7720
2018-05-31 20:07:01 -07:00
Kiran Challa 39f7420c4d Fixed routing test 2018-04-13 11:51:45 -07:00
= 7113e54267 Update usage of TestSink 2018-04-12 16:17:04 -07:00
Kiran Challa 4184b2406d Updated to make routing always use UrlEncoder.Default and not depend on DI to get it.
[Fixes #513] RedirectToAction with Non-English Characters in Parameters and Authentication Causes Error
2018-04-12 05:15:45 -07:00
Jass Bagga 57697baedb
Tolerate leading "~/" or "/" (#509) 2018-01-11 13:00:01 -08:00
Jass Bagga 93d20ec78c
Revert Dispatcher changes (#508)
Addresses aspnet/Home#2741
2018-01-10 12:53:17 -08:00
Jass Bagga 54e96bd404
Tolerate leading "~/" or "/" (#499)
Addresses #441
2017-11-21 14:20:17 -08:00
Pranav K b67c63927c Update samples and tests to target netcoreapp2.1 2017-11-13 16:45:38 -08:00
Nate McMaster f4fb178f55 Pin tool and package versions to make builds more repeatable
Part of aspnet/Universe#575
2017-11-01 16:32:09 -07:00
Ryan Nowak 736b49294d Add Template abstraction
This change adds the Template as a top level abstraction. URL templating
is now a two-stage process.

First you use a 'key' to look up a Template, then you use the Template
to create the URL.

This change also has some cleanup of the way RoutePatternBinder gets
instantiated. I added a factory service so that most of the complex
things can be made internal to Dispatcher. Now it's much easier to
constuct and use. These impacts some pubternal APIs that we already
broke, but makes them actually nice :)

Also cleaned up some tests and fixed one that was broken and not
running.
2017-10-25 22:15:24 -07:00
Ryan Nowak 2d661396df Port TemplateBinder to dispatcher 2017-10-25 14:28:20 -07:00
Jass Bagga eebc7db2ca Use RoutePatternMatcher logic in TemplateMatcher (#484) 2017-10-25 14:16:04 -07:00
Ryan Nowak bd517f891f Support conversions from RouteTemplate -> RoutePattern 2017-10-20 16:58:14 -07:00
Jass Bagga fdc5f21428 Port PathTokenizer (#478) 2017-10-20 13:24:00 -07:00
Ryan Nowak 08a64048da Redesign public API for templates
-Renamed RouteTemplate -> RoutePattern
-Made immutable
-Added Builder
-Lots of fixes to parser to support new design

There are a few small issues logged for follow-up but this is mostly in
the place I want it design-wise.
2017-10-19 09:41:45 -07:00
Jass Bagga 3a5cd6dd25 Port TemplateParser to Dispatcher project (#473)
Addresses #466
2017-10-17 11:52:26 -07:00
Nate McMaster 6b3d42f6bd Minor changes to test code to resolve xUnit2013 build errors 2017-10-05 15:26:36 -07:00
Nate McMaster e67d85d30c Use PackageLineup to manage PackageReference versions 2017-08-29 11:31:54 -07:00
Nate McMaster 44f9a7083b Use Directory.Build.props/targets 2017-08-29 11:30:03 -07:00
Nate McMaster 248f15dee1 Upgrade to xunit 2.3.0-beta4
Includes some changes as required by the new analyzers in this upgrade
2017-08-22 17:49:54 -07:00
Joonas Westlin a18f59ab88 Changed expected exception message to the one defined in Resources.resx.
Removed the Debug.Assert as that caused the test runner to crash as in
this case the preceding part is not a literal.
Fixes the test runner crash.
2017-05-24 08:23:20 -07:00
Joonas Westlin f457c7b9d8 Changed expected parameter p2 to non-optional as it is non-optional in the template string.
Fixes test.
2017-05-24 08:23:20 -07:00
Ryan Brandenburg efb097ce60 Target .NET Standard 2.0 and add net461 testing 2017-05-23 14:38:36 -07:00
Nate McMaster d075f1bcea Upgrade test framework versions and fix test issues 2017-05-12 15:13:17 -07:00
Pranav K ce021a888e Change TFM to netcoreapp2.0 2017-05-05 09:49:42 -07:00
Ryan Nowak 232b73a151 Fix aspnet/Mvc#6218
This fixes the case described in the comments in TemplateBinder.

This case is much more common for pages which is why we're only seeing it
now. We've had this issue for all of 1.0.0 in both conventional and
attribute routing.
2017-04-28 17:00:35 -07:00
Kiran Challa 95aadb3f4f removed dead code 2017-04-20 16:47:26 -07:00
Kiran Challa 2388cca5ac Workaround for issue https://github.com/aspnet/Routing/issues/390 2017-04-20 16:47:26 -07:00
Steve Sanderson 8c58086030 Make TreeRouter restore RouteData snapshots consistently. Fixes #394. 2017-04-11 15:36:34 +01:00
Kiran Challa 77da34c7b3 Converted sample and test projects to netcoreapp2.0 2017-03-23 17:04:59 -07:00
Pranav K 1ef45e64b8 Update to net46 2017-03-22 18:26:48 -07:00
Nate McMaster 101764328b Consolidate dependency versions to one file and remove workarounds 2017-03-15 17:01:10 -07:00
Ajay Bhargav Baaskaran 4569750d86 Using NullLogger types from Logging.Abstractions (#389) 2017-03-14 12:19:33 -07:00
Doug Bunting ce76fc02f2 Bump test projects up to .NET 4.5.2
- aspnet/Testing#248
- xUnit no longer supports .NET 4.5.1
- build tests for desktop .NET only on Windows
2017-02-14 16:35:35 -08:00
Pranav K 0f4ce625ed Update to VS 2017 RC3 2017-01-27 11:04:42 -08:00
Kiran Challa 755d436840 Fixed error message related to escaping curly braces. 2017-01-03 14:33:36 -08:00
Kiran Challa 071b616178 Merge branch 'rel/1.1.1' into dev
# Conflicts:
#	NuGet.config
#	samples/RoutingSample.Web/project.json
#	src/Microsoft.AspNetCore.Routing.Abstractions/project.json
#	src/Microsoft.AspNetCore.Routing.DecisionTree.Sources/project.json
#	src/Microsoft.AspNetCore.Routing/project.json
#	test/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests/project.json
#	test/Microsoft.AspNetCore.Routing.DecisionTree.Sources.Tests/project.json
#	test/Microsoft.AspNetCore.Routing.FunctionalTests/project.json
#	test/Microsoft.AspNetCore.Routing.Tests/project.json
2017-01-03 13:33:26 -08:00
Kiran Challa 4bfd663c45 [Fixes #370] Raw route values should be restored after template binder failing binding values when generating a url
- Reverted changes made in commit: 1c9a54aeb8
2017-01-03 13:23:36 -08:00
Pranav K ce525150ab Updating to 4.4 CoreFx packages 2016-12-21 22:55:19 -08:00
Kiran Challa 20967cfa76 [Fixes #367] Add extensions on WebHostBuilder for super simple HTTP service application building 2016-12-21 10:04:02 -08:00
Pranav K 3db35194c9 Pinning versions for 1.1.0 release 2016-11-18 12:13:32 -08:00
Pranav K d3c145cbe8 Updating versions to 1.2.0-* 2016-11-09 14:19:24 -08:00
Pranav K d81ea871fb Updating to netcoreapp1.1 2016-10-13 11:24:12 -07:00
Pranav K 5c28a07a6f Revert "Updating to netcoreapp1.1"
This reverts commit 7e082dbdef.
2016-10-12 16:09:35 -07:00
Pranav K 7e082dbdef Updating to netcoreapp1.1 2016-10-12 13:46:26 -07:00
Pranav K 67d0c13815 Updating partner package versions 2016-10-03 20:00:38 -07:00
jacalvar 74a3063c45 [Fixes #357] Fix behavior when optional parameters are defined within a route and not at the end 2016-10-03 19:31:17 -07:00
jacalvar 438ec83227 [Fixes #359] Routing is matching empty segments to parameters and defaults are wrong 2016-10-03 15:34:04 -07:00
Pavel Krymets 032bcf43b2 Use TaskCache class from Microsoft.Extensions.TaskCache.Sources (#361)
Instead of Task.FromResult(0)
2016-09-08 09:25:44 -07:00
Kiran Challa 714c3d6659 [Fixes #4991] Misleading MissingMethodException message for incorrect routes 2016-08-10 12:09:28 -07:00
Pranav K e1b2ee6627 Updating to Moq \ Castle.Core that does not require imports 2016-08-08 12:25:00 -07:00
Ivano Scifoni 88de3d5070 StringRouteConstraint implementation 2016-08-04 10:39:53 -07:00
Doug Bunting 1bcd01338a One build to rule them all
- well, at least VS and command-line builds will share output
- part of aspnet/Coherence-Signed#277
2016-07-07 12:31:06 -07:00
Ajay Bhargav Baaskaran 902190406d Updating to RTM builds of xunit and Moq 2016-07-05 17:10:14 -07:00
jacalvar 90dc4bc207 [Fixes #324] Default parameters are not taken into account on attribute routing 2016-07-01 16:06:03 -07:00
Ryan Nowak 0978a7dd16 Add some tests, rename misnamed file 2016-07-01 09:29:02 -07:00
Pranav K 2c264efd42 Updating to dev versions 2016-06-16 10:18:32 -07:00
N. Taylor Mullen 334d14ac66 Remove direct Microsoft.NETCore.Platforms dependency.
- Microsoft.NETCore.App now pulls this package in.

aspnet/Coherence-Signed#344
2016-06-13 15:29:38 -07:00
jacalvar dd79d0b88c [Fixes #316] TreeRouter does not match a route with the correct length 2016-06-03 12:55:20 -07:00
Pranav K 74a246d34c Merge branch 'release' into dev 2016-05-02 15:21:04 -07:00
Pranav K 0ce851680b Fix build warnings 2016-05-02 11:27:25 -07:00
Ryan Nowak e8ce0e7523 TreeRouter cleanup 2016-04-20 18:12:10 -07:00
Pranav K f826be9206 Use latest build of dotnet-test-xunit 2016-04-19 14:54:10 -07:00
Pranav K ea2d30ff49 Merge branch 'release' into dev 2016-04-19 14:54:10 -07:00
Pavel Krymets 793cd22aa0 Merge branch 'release' into dev 2016-04-18 17:03:21 -07:00
Pavel Krymets d98924f713 Bring Microsoft.NETCore.Platforms dependency back 2016-04-18 17:03:18 -07:00
Pavel Krymets d7a36ce05e Merge branch 'release' into dev 2016-04-14 16:33:54 -07:00
Pavel Krymets b1f720ef12 Migrate tests, tools and samples to portable 2016-04-14 16:28:13 -07:00
Ryan Nowak 9cd3fe34a5 Improve tests for catch-all + defaults/nulls 2016-04-11 15:17:07 -07:00
Ryan Nowak a51c78da06 Remove dictionary alloc in routing
This changes TemplateMatcher to mutate RouteData.Values directly instead
of creating a new dictionary and then merging in values. This is one the
biggest single costs in routing in terms of both allocations and execution
time.

So Match now becomes TryMatch. This will dirty the state of the RVD, so
the caller needs to snapshot it before calling into it (handled
inside the TreeRouter or RouteCollection).

Some subtle changes were needed to how/when values are added to be
compatible with the existing tests. The general idea is that we add null
values for non-parameter defaults or catchalls, but only if they don't
trounce an existing value. This logic used to live in MergeValues but now
it's in TryMatch since TryMatch might be working from existing data.

Also fixed the .sln to avoid building a package that we use as shared
source.
2016-04-08 08:46:00 -07:00
Doug Bunting 67f424360c React to HttpAbstractions namespace changes
- aspnet/HttpAbstractions#549 and aspnet/HttpAbstractions#592
- clean up `using`s
2016-03-30 16:10:41 -07:00
Doug Bunting 39b4f6fe53 An `ObjectPoolProvider` is always registered
- react to aspnet/Hosting/pull#673
2016-03-25 10:08:16 -07:00
David Fowler 7399cc8957 Fixed build 2016-03-25 02:40:08 -07:00
Kiran Challa 0c3f6497db Fixes issue of request path segment length greater than the wildcard template route
Fixes https://github.com/aspnet/Mvc/issues/4256
2016-03-23 17:36:07 -07:00
Ajay Bhargav Baaskaran 3127e7a2e9 [Fixes #294] Set DefaultHandler in RouteBuilder 2016-03-10 15:25:34 -08:00
John Luo b7fc5f06cd Fix test with mismatched literal type 2016-03-10 15:15:56 -08:00
Doug Bunting 27c6d8c665 Remove project name from output path
- aspnet/Coherence-Signed#187
- remove `<RootNamespace>` settings but maintain other unique aspects e.g. `<DnxInvisibleContent ... />`
- in a few cases, standardize on VS version `14.0` and not something more specific
2016-03-02 21:06:00 -08:00
N. Taylor Mullen bb7cb4a0d9 Transition to netstandard.
- dotnet5.X => netstandard1.y (where y = x-1).
- DNXCore50 => netstandardapp1.5.
- Applied the same changes to ifdefs.
2016-03-01 13:37:03 -08:00
John Luo 8c64656882 Updating test TFMs for custom test discovery 2016-02-19 15:08:13 -08:00
Kiran Challa 51c4dd43b3 Enable tests to run using dotnet xunit runner 2016-02-10 15:01:44 -08:00
Ryan Nowak d97947e229 Move routing extensions to .Routing 2016-02-04 09:55:09 -08:00
Ryan Nowak 4b980c8afa Optimize defensive copies where possible 2016-02-03 15:36:42 -08:00
Ryan Nowak 48eb000a0e Fix routing build 2016-02-02 11:44:52 -08:00
N. Taylor Mullen 70d674410e Rename AspNet 5 file contents.
See https://github.com/aspnet/Announcements/issues/144 for more information.
2016-01-22 12:24:38 -08:00
N. Taylor Mullen ace4553d77 Rename AspNet 5 folders and files.
See https://github.com/aspnet/Announcements/issues/144 for more information.
2016-01-22 12:24:31 -08:00