-
Notifications
You must be signed in to change notification settings - Fork 129
Test-Connection Changes #172
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 5 commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
2633d63
Create RFCNNNN-Test-Connection.md
vexx32 f2d2fbc
Update RFCNNNN-Test-Connection.md
vexx32 67d894f
Update RFCNNNN-Test-Connection.md
vexx32 771e964
Update RFCNNNN-Test-Connection.md
vexx32 f6dc579
:memo: Rename RoundTripTime -> Latency
vexx32 6b92b9a
Apply suggestions from code review
vexx32 deb5d3f
Update RFCNNNN-Test-Connection.md
vexx32 7a3af51
Prepare for acceptance of RFC0037 (Test-Connection)
joeyaiello File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,121 @@ | ||
--- | ||
RFC: XXXX | ||
Author: Joel Sallow | ||
Status: Draft | ||
Version: 1.0 | ||
Area: Cmdlets | ||
Comments Due: 6/10/19 | ||
Plan to Implement: Yes | ||
--- | ||
|
||
# Proposed Changes to `Test-Connection` Cmdlet | ||
|
||
## Syntax | ||
|
||
``` | ||
# All Sets | ||
Test-Connection [-TargetName] <string[]> [-IPv4] [-IPv6] [-ResolveDestination] [-TimeoutSeconds <int>] [-Quiet] [<CommonParameters>] | ||
|
||
# Set 1 | ||
[-Ping] [-Count <int>] [-Delay <int>] [-Source <string>] [-MaxHops <int>] [-BufferSize <int>] [-DontFragment] | ||
|
||
# Set 2 | ||
[-Ping] [-Continues] [-Delay <int>] [-Source <string>] [-MaxHops <int>] [-BufferSize <int>] [-DontFragment] | ||
|
||
# Set 3 | ||
Test-Connection [-TargetName] <string[]> -Traceroute [-Source <string>] [-MaxHops <int>] | ||
vexx32 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
# Set 4 | ||
Test-Connection [-TargetName] <string[]> -MTUSizeDetect | ||
vexx32 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
# Set 5 | ||
Test-Connection [-TargetName] <string[]> -TCPPort <int> [-Source <string>] | ||
vexx32 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
``` | ||
|
||
## Changes | ||
|
||
1. All current host/information output is relegated to the `-Verbose` stream. | ||
2. No progress bar per committee decision in [PowerShell#6768](https://github.com/PowerShell/PowerShell/issues/6768). | ||
3. All output occurs as soon as data is available, individual records per ping reply / trace hop. | ||
4. All presented data should be readily available as properties to the user. | ||
|
||
## Output Type Proposed Members | ||
|
||
### PingStatus | ||
|
||
```csharp | ||
class PingStatus | ||
{ | ||
string Source { get; } | ||
IPAddress Address { get; } | ||
string Destination { get; } | ||
int Latency { get; } | ||
int BufferSize { get; } | ||
PingOptions Options { get; } | ||
// Hidden in the formatter when not set; only populated & shown when using the -MtuSizeDetect switch | ||
int MtuSize { get; } = -1 | ||
vexx32 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} | ||
``` | ||
|
||
### TraceStatus | ||
|
||
```csharp | ||
class TraceStatus | ||
{ | ||
int Hop { get; } | ||
int[] Latency { get; } | ||
string Destination { get; } | ||
IPAddress DestinationAddress { get; } | ||
IPAddress HopAddress { get; } | ||
vexx32 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
int BufferSize { get; } | ||
PingStatus[] Replies { get; } | ||
} | ||
``` | ||
|
||
## Mockups | ||
|
||
### `Test-Connection www.google.com` | ||
|
||
- Information from the `Replies` property of the output object should be included in the main output object, and primary output mode should be _multiple_ objects, each representing a single ping attempt/reply object. | ||
- Buffer _data_ is generally irrelevant, as it cannot be specified, and only a `BufferSize` property should be exposed. `Replies.Buffer` property should remain `private`. | ||
- `Replies.Options` property should be hidden from default formatting. | ||
- Results output as a table, grouped by Destination address (in the case that multiple destinations are specified). | ||
|
||
**Resulting output:** | ||
```code | ||
Destination: www.google.com | ||
Source Address Latency (ms) BufferSize | ||
------ ------- ------------ ---------- | ||
WS-JOEL 172.217.2.132 36 32 | ||
WS-JOEL 172.217.2.132 21 32 | ||
WS-JOEL 172.217.2.132 25 32 | ||
WS-JOEL 172.217.2.132 25 32 | ||
``` | ||
|
||
### `Test-Connection www.google.com -TraceRoute` | ||
|
||
- Each hop should be output as a separate object, each containing the `PingReply` objects as a property accessible by hidden from formatting. | ||
- Main `TraceRouteResult` object should contain either ETS or class properties that calculate summary data from their four PingReplies. | ||
- **Note:** This object type we're using is currently **bugged**, and all `PingReply` objects report `TtlExpired` as their status. Recommend investigating progress of fix for .NET Core 3, or designing custom solution for TraceRoute backing to resolve the issue. | ||
- Output as a table, grouped by `DestinationHost` (Why is this property name different to that of the other object type used for standard pings?) | ||
|
||
**Resulting output:** | ||
```code | ||
Destination: www.google.com | ||
Hop Latency (ms) DestinationAddress HopAddress BufferSize | ||
--- ------------ ------------------ ---------- ---------- | ||
1 {0, 0, 0} 172.217.2.132 192.168.22.254 | ||
2 {0, 0, 0} 172.217.2.132 75.144.219.238 | ||
3 {0, 0, 0} 172.217.2.132 96.120.37.17 | ||
4 {0, 0, 0} 172.217.2.132 96.110.136.65 | ||
5 {0, 0, 0} 172.217.2.132 69.139.180.170 | ||
6 {0, 0, 0} 172.217.2.132 68.85.127.121 | ||
7 {0, 0, 0} 172.217.2.132 68.86.165.161 | ||
8 {0, 0, 0} 172.217.2.132 68.86.90.205 | ||
9 {0, 0, 0} 172.217.2.132 68.86.82.154 | ||
10 {0, 0, 0} 172.217.2.132 66.208.233.242 | ||
11 {0, 0, 0} 172.217.2.132 0.0.0.0 | ||
12 {0, 0, 0} 172.217.2.132 216.239.59.124 | ||
13 {0, 0, 0} 172.217.2.132 216.239.59.61 | ||
14 {32, 28, 20} 172.217.2.132 172.217.2.132 | ||
``` |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This would be the default parameter set, correct?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yep!