diff --git a/pkg/dsl/ast.go b/pkg/dsl/ast.go index 982144e..9e71079 100644 --- a/pkg/dsl/ast.go +++ b/pkg/dsl/ast.go @@ -112,6 +112,9 @@ func NewASTLoader() *ASTLoader { // parallel.go al.RegisterCustomLoaderRule(&runStagesInParallelLoader{}) + // progress.go + al.RegisterCustomLoaderRule(&wrapWithProgressLoader{}) + // quichandshake.go al.RegisterCustomLoaderRule(&quicHandshakeLoader{}) diff --git a/pkg/dsl/example_test.go b/pkg/dsl/example_test.go index 4650035..21a703d 100644 --- a/pkg/dsl/example_test.go +++ b/pkg/dsl/example_test.go @@ -111,7 +111,7 @@ func Example_internalDSL() { // Create a measurement runtime using measurexlite as the underlying // measurement library such that we also collect observations. - rtx := dsl.NewMeasurexliteRuntime(log.Log, &dsl.NullMetrics{}, time.Now()) + rtx := dsl.NewMeasurexliteRuntime(log.Log, &dsl.NullMetrics{}, &dsl.NullProgressMeter{}, time.Now()) // Create the void input for the pipeline. input := dsl.NewValue(&dsl.Void{}) @@ -166,7 +166,7 @@ func Example_externalDSL() { // Create a measurement runtime using measurexlite as the underlying // measurement library such that we also collect observations. - rtx := dsl.NewMeasurexliteRuntime(log.Log, &dsl.NullMetrics{}, time.Now()) + rtx := dsl.NewMeasurexliteRuntime(log.Log, &dsl.NullMetrics{}, &dsl.NullProgressMeter{}, time.Now()) // Create the void input for the pipeline. We need to cast the input to // a generic Maybe because there's dynamic type checking when running an @@ -211,7 +211,7 @@ func Example_singleEndpointInternalDSL() { metrics := dsl.NewAccountingMetrics() // create a measurement runtime - rtx := dsl.NewMeasurexliteRuntime(log.Log, metrics, time.Now()) + rtx := dsl.NewMeasurexliteRuntime(log.Log, metrics, &dsl.NullProgressMeter{}, time.Now()) // run the measurement pipeline _ = pipeline.Run(context.Background(), rtx, dsl.NewValue(&dsl.Void{})) @@ -256,7 +256,7 @@ func Example_singleEndpointExternalDSL() { metrics := dsl.NewAccountingMetrics() // create a measurement runtime - rtx := dsl.NewMeasurexliteRuntime(log.Log, metrics, time.Now()) + rtx := dsl.NewMeasurexliteRuntime(log.Log, metrics, &dsl.NullProgressMeter{}, time.Now()) // run the measurement pipeline _ = runnable.Run(context.Background(), rtx, dsl.NewValue(&dsl.Void{}).AsGeneric()) diff --git a/pkg/dsl/measurexlite.go b/pkg/dsl/measurexlite.go index 48c724e..682dc21 100644 --- a/pkg/dsl/measurexlite.go +++ b/pkg/dsl/measurexlite.go @@ -17,6 +17,9 @@ type MeasurexliteRuntime struct { // metrics contains the metrics. metrics Metrics + // progress is the ProgressMeter to use. + progress ProgressMeter + // runtime is the MinimalRuntime we compose with. runtime *MinimalRuntime @@ -25,9 +28,15 @@ type MeasurexliteRuntime struct { } // NewMeasurexliteRuntime creates a new [MeasurexliteRuntime]. -func NewMeasurexliteRuntime(logger model.Logger, metrics Metrics, zeroTime time.Time) *MeasurexliteRuntime { +func NewMeasurexliteRuntime( + logger model.Logger, + metrics Metrics, + progress ProgressMeter, + zeroTime time.Time, +) *MeasurexliteRuntime { return &MeasurexliteRuntime{ metrics: metrics, + progress: progress, runtime: NewMinimalRuntime(logger), zeroTime: zeroTime, } @@ -40,6 +49,11 @@ func (r *MeasurexliteRuntime) Close() error { return r.runtime.Close() } +// ProgressMeter implements Runtime. +func (r *MeasurexliteRuntime) ProgressMeter() ProgressMeter { + return r.progress +} + // Metrics implements Runtime. func (r *MeasurexliteRuntime) Metrics() Metrics { return r.metrics diff --git a/pkg/dsl/measurexlite_test.go b/pkg/dsl/measurexlite_test.go index ed977c9..d949541 100644 --- a/pkg/dsl/measurexlite_test.go +++ b/pkg/dsl/measurexlite_test.go @@ -59,7 +59,8 @@ func TestMeasurexliteHTTPIncludeResponseBodySnapshot(t *testing.T) { // define the function to run the measurement measure := func(options ...HTTPTransactionOption) (Maybe[*HTTPResponse], *Observations) { pipeline := makePipeline(options...) - rtx := NewMeasurexliteRuntime(model.DiscardLogger, &NullMetrics{}, time.Now()) + meter := &NullProgressMeter{} + rtx := NewMeasurexliteRuntime(model.DiscardLogger, &NullMetrics{}, meter, time.Now()) input := NewValue(&Void{}) output := pipeline.Run(context.Background(), rtx, input) observations := ReduceObservations(rtx.ExtractObservations()...) diff --git a/pkg/dsl/progress.go b/pkg/dsl/progress.go new file mode 100644 index 0000000..22c7357 --- /dev/null +++ b/pkg/dsl/progress.go @@ -0,0 +1,130 @@ +package dsl + +import ( + "context" + "encoding/json" + "sync" + + "github.com/ooni/probe-engine/pkg/model" +) + +// ProgressMeter tracks progress. +type ProgressMeter interface { + // IncrementProgress increments the progress meter by adding the given delta + // to the current progress meter value. The progress meter value is a float + // number where 0 means beginning and 1.0 means we are done. + IncrementProgress(delta float64) +} + +// NullProgressMeter is a [ProgressMeter] that does nothing. The zero +// value of this struct is ready to use. +type NullProgressMeter struct{} + +var _ ProgressMeter = &NullProgressMeter{} + +// IncrementProgress implements ProgressMeter. +func (pm *NullProgressMeter) IncrementProgress(value float64) { + // nothing +} + +// ProgressMeterExperimentCallbacks wraps [model.ExperimentCallbacks] and +// implements [ProgressMeter]. The zero value is not ready to use; you should +// construct using the [NewProgressMeterExperimentCallbacks] factory. +type ProgressMeterExperimentCallbacks struct { + callbacks model.ExperimentCallbacks + mu sync.Mutex + total float64 +} + +// NewProgressMeterExperimentCallbacks constructs a new [ProgressMeterExperimentCallbacks]. +func NewProgressMeterExperimentCallbacks(cb model.ExperimentCallbacks) *ProgressMeterExperimentCallbacks { + return &ProgressMeterExperimentCallbacks{ + callbacks: cb, + mu: sync.Mutex{}, + total: 0, + } +} + +var _ ProgressMeter = &ProgressMeterExperimentCallbacks{} + +// IncrementProgress implements ProgressMeter. +func (pm *ProgressMeterExperimentCallbacks) IncrementProgress(delta float64) { + pm.mu.Lock() + if delta >= 0 { + pm.total += delta + if pm.total > 1.0 { + pm.total = 1.0 + } + } + total := pm.total + pm.mu.Unlock() + pm.callbacks.OnProgress(total, "") +} + +// WrapWithProgress wraps a list of stages such that each stage increments the +// progress of running a measurement by an equal contribution. +func WrapWithProgress(input ...Stage[*Void, *Void]) (output []Stage[*Void, *Void]) { + var delta float64 + if len(input) > 0 { + delta = 1 / float64(len(input)) + } + for _, stage := range input { + output = append(output, &wrapWithProgressStage{delta, stage}) + } + return output +} + +type wrapWithProgressStage struct { + delta float64 + stage Stage[*Void, *Void] +} + +const wrapWithProgressStageName = "wrap_with_progress" + +type wrapWithProgressStageArguments struct { + Delta float64 `json:"delta"` +} + +// ASTNode implements Stage. +func (sx *wrapWithProgressStage) ASTNode() *SerializableASTNode { + // Note: we serialize the structure because this gives us forward compatibility (i.e., we + // may add a field to a future version without breaking the AST structure and old probes will + // be fine as long as the zero value of the new field is the default) + return &SerializableASTNode{ + StageName: wrapWithProgressStageName, + Arguments: &wrapWithProgressStageArguments{sx.delta}, + Children: []*SerializableASTNode{sx.stage.ASTNode()}, + } +} + +type wrapWithProgressLoader struct{} + +// Load implements ASTLoaderRule. +func (*wrapWithProgressLoader) Load(loader *ASTLoader, node *LoadableASTNode) (RunnableASTNode, error) { + var config wrapWithProgressStageArguments + if err := json.Unmarshal(node.Arguments, &config); err != nil { + return nil, err + } + runnables, err := loader.LoadChildren(node) + if err != nil { + return nil, err + } + if len(runnables) != 1 { + return nil, ErrInvalidNumberOfChildren + } + runnables0 := &RunnableASTNodeStage[*Void, *Void]{runnables[0]} + stage := &wrapWithProgressStage{config.Delta, runnables0} + return &StageRunnableASTNode[*Void, *Void]{stage}, nil +} + +// StageName implements ASTLoaderRule. +func (*wrapWithProgressLoader) StageName() string { + return wrapWithProgressStageName +} + +// Run implements Stage. +func (sx *wrapWithProgressStage) Run(ctx context.Context, rtx Runtime, input Maybe[*Void]) Maybe[*Void] { + output := sx.stage.Run(ctx, rtx, input) + rtx.ProgressMeter().IncrementProgress(sx.delta) + return output +} diff --git a/pkg/dsl/qa_test.go b/pkg/dsl/qa_test.go index 7a430d5..1d9827b 100644 --- a/pkg/dsl/qa_test.go +++ b/pkg/dsl/qa_test.go @@ -131,7 +131,7 @@ func qaNewEnvironment() *netemx.QAEnv { func qaRunNode(metrics dsl.Metrics, runnable dsl.RunnableASTNode) (*dsl.Observations, error) { input := dsl.NewValue(&dsl.Void{}).AsGeneric() - rtx := dsl.NewMeasurexliteRuntime(log.Log, metrics, time.Now()) + rtx := dsl.NewMeasurexliteRuntime(log.Log, metrics, &dsl.NullProgressMeter{}, time.Now()) if err := dsl.Try(runnable.Run(context.Background(), rtx, input)); err != nil { return nil, err } diff --git a/pkg/dsl/runtime.go b/pkg/dsl/runtime.go index d95d956..90adb1d 100644 --- a/pkg/dsl/runtime.go +++ b/pkg/dsl/runtime.go @@ -19,14 +19,17 @@ type Runtime interface { // Close closes all the closers tracker by the runtime. Close() error + // Logger returns the logger to use. + Logger() model.Logger + // Metrics returns the metrics to use. Metrics() Metrics // NewTrace creates a new measurement trace. NewTrace() Trace - // Logger returns the logger to use. - Logger() model.Logger + // ProgressMeter returns the progress meter to use. + ProgressMeter() ProgressMeter // SaveObservations saves the given observations into the runtime. SaveObservations(observations ...*Observations) @@ -82,7 +85,7 @@ func (r *MinimalRuntime) Close() error { return nil } -// ExtractObservations implements Trace. +// ExtractObservations implements Runtime. func (r *MinimalRuntime) ExtractObservations() []*Observations { defer r.mu.Unlock() r.mu.Lock() @@ -91,6 +94,11 @@ func (r *MinimalRuntime) ExtractObservations() []*Observations { return out } +// ProgressMeter implements Runtime. +func (r *MinimalRuntime) ProgressMeter() ProgressMeter { + return &NullProgressMeter{} +} + // Metrics implements Runtime. func (r *MinimalRuntime) Metrics() Metrics { return defaultNullMetrics diff --git a/pkg/experiment/fbmessenger/dslcore.go b/pkg/experiment/fbmessenger/dslcore.go index 5984e70..3baad95 100644 --- a/pkg/experiment/fbmessenger/dslcore.go +++ b/pkg/experiment/fbmessenger/dslcore.go @@ -4,7 +4,7 @@ import "github.com/ooni/2023-05-richer-input/pkg/dsl" // DSLToplevelFunc generates the Facebook Messenger measurement pipeline. func DSLToplevelFunc(tk *TestKeys) dsl.Stage[*dsl.Void, *dsl.Void] { - return dsl.RunStagesInParallel( + stages := dsl.WrapWithProgress( // stun dsl.Compose4( @@ -130,4 +130,5 @@ func DSLToplevelFunc(tk *TestKeys) dsl.Stage[*dsl.Void, *dsl.Void] { ), ), ) + return dsl.RunStagesInParallel(stages...) } diff --git a/pkg/experiment/fbmessenger/measurer.go b/pkg/experiment/fbmessenger/measurer.go index 7907272..ebf272c 100644 --- a/pkg/experiment/fbmessenger/measurer.go +++ b/pkg/experiment/fbmessenger/measurer.go @@ -58,8 +58,10 @@ func (m *Measurer) Run(ctx context.Context, args *model.ExperimentArgs) error { } // create the DSL runtime + meter := dsl.NewProgressMeterExperimentCallbacks(args.Callbacks) rtx := dsl.NewMeasurexliteRuntime( - args.Session.Logger(), &dsl.NullMetrics{}, args.Measurement.MeasurementStartTimeSaved) + args.Session.Logger(), &dsl.NullMetrics{}, meter, + args.Measurement.MeasurementStartTimeSaved) defer rtx.Close() // evaluate the pipeline and handle exceptions diff --git a/pkg/experiment/riseupvpn/riseupvpn.go b/pkg/experiment/riseupvpn/riseupvpn.go index acf0694..2b18789 100644 --- a/pkg/experiment/riseupvpn/riseupvpn.go +++ b/pkg/experiment/riseupvpn/riseupvpn.go @@ -63,13 +63,13 @@ func (m *Measurer) Run(ctx context.Context, args *model.ExperimentArgs) error { // TODO(bassosimone): both fbmessenger and riseupvpn lack // // 1. an explicit mechanism to report the bytes sent and received, but the - // implicit context-based mechanism probably works; - // - // 2. a DSL-based mechanism to increment the test progress percentage. + // implicit context-based mechanism probably works. // create the DSL runtime + progress := dsl.NewProgressMeterExperimentCallbacks(args.Callbacks) rtx := dsl.NewMeasurexliteRuntime( - args.Session.Logger(), &dsl.NullMetrics{}, args.Measurement.MeasurementStartTimeSaved) + args.Session.Logger(), &dsl.NullMetrics{}, progress, + args.Measurement.MeasurementStartTimeSaved) defer rtx.Close() // evaluate the pipeline and handle exceptions diff --git a/pkg/ooniprobe/runner/progress.go b/pkg/ooniprobe/runner/progress.go index 024ed3f..f9e346a 100644 --- a/pkg/ooniprobe/runner/progress.go +++ b/pkg/ooniprobe/runner/progress.go @@ -76,6 +76,8 @@ var _ model.ExperimentCallbacks = &progressEmitterNettest{} func (pe *progressEmitterNettest) OnProgress(progress float64, message string) { // the view only supports setting the progress, so use the logger // to make sure the message is not lost - pe.logger.Info(message) + if message != "" { + pe.logger.Info(message) + } pe.view.UpdateProgressBarValueWithinRange(progress) } diff --git a/pkg/x/cmd/riseupvpn/main.go b/pkg/x/cmd/riseupvpn/main.go index d461034..a550bb3 100644 --- a/pkg/x/cmd/riseupvpn/main.go +++ b/pkg/x/cmd/riseupvpn/main.go @@ -16,7 +16,7 @@ import ( // isTCPGatewayAccessible returns whether a gateways is accessible. func isTCPGatewayAccessible(stage dsl.Stage[*dsl.Void, *dsl.Void]) bool { metrics := dsl.NewAccountingMetrics() - rtx := dsl.NewMeasurexliteRuntime(log.Log, metrics, time.Now()) + rtx := dsl.NewMeasurexliteRuntime(log.Log, metrics, &dsl.NullProgressMeter{}, time.Now()) input := dsl.NewValue(&dsl.Void{}) ctx := context.Background() runtimex.Try0(dsl.Try(stage.Run(ctx, rtx, input))) @@ -84,7 +84,7 @@ func mustGenerateDSL(eipService *apiEIPService, rootCA string) dsl.Stage[*dsl.Vo stages = append(stages, dslRuleFetchGeoServiceURL(rootCA)) // return the composed pipeline - return dsl.RunStagesInParallel(stages...) + return dsl.RunStagesInParallel(dsl.WrapWithProgress(stages...)...) } func main() { diff --git a/testdata/fbmessenger.jsonc b/testdata/fbmessenger.jsonc index 2b5fb5c..a047a58 100644 --- a/testdata/fbmessenger.jsonc +++ b/testdata/fbmessenger.jsonc @@ -15,23 +15,20 @@ "arguments": null, "children": [ { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.14285714285714285 + }, "children": [ - { - "stage_name": "domain_name", - "arguments": { - "domain": "stun.fbsbx.com" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "dns_lookup_getaddrinfo", - "arguments": null, + "stage_name": "domain_name", + "arguments": { + "domain": "stun.fbsbx.com" + }, "children": [] }, { @@ -39,22 +36,33 @@ "arguments": null, "children": [ { - "stage_name": "if_filter_exists", + "stage_name": "dns_lookup_getaddrinfo", + "arguments": null, + "children": [] + }, + { + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "fbmessenger_dns_consistency_check", - "arguments": { - "endpoint_name": "stun" - }, + "stage_name": "if_filter_exists", + "arguments": null, + "children": [ + { + "stage_name": "fbmessenger_dns_consistency_check", + "arguments": { + "endpoint_name": "stun" + }, + "children": [] + } + ] + }, + { + "stage_name": "discard", + "arguments": null, "children": [] } ] - }, - { - "stage_name": "discard", - "arguments": null, - "children": [] } ] } @@ -63,23 +71,20 @@ ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.14285714285714285 + }, "children": [ - { - "stage_name": "domain_name", - "arguments": { - "domain": "b-api.facebook.com" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "dns_lookup_getaddrinfo", - "arguments": null, + "stage_name": "domain_name", + "arguments": { + "domain": "b-api.facebook.com" + }, "children": [] }, { @@ -87,63 +92,74 @@ "arguments": null, "children": [ { - "stage_name": "if_filter_exists", + "stage_name": "dns_lookup_getaddrinfo", "arguments": null, - "children": [ - { - "stage_name": "fbmessenger_dns_consistency_check", - "arguments": { - "endpoint_name": "b_api" - }, - "children": [] - } - ] + "children": [] }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "make_endpoints_for_port", - "arguments": { - "port": 443 - }, - "children": [] + "stage_name": "if_filter_exists", + "arguments": null, + "children": [ + { + "stage_name": "fbmessenger_dns_consistency_check", + "arguments": { + "endpoint_name": "b_api" + }, + "children": [] + } + ] }, { - "stage_name": "new_endpoint_pipeline", + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "compose", + "stage_name": "make_endpoints_for_port", + "arguments": { + "port": 443 + }, + "children": [] + }, + { + "stage_name": "new_endpoint_pipeline", "arguments": null, "children": [ - { - "stage_name": "tcp_connect", - "arguments": null, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "if_filter_exists", + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "fbmessenger_tcp_reachability_check", - "arguments": { - "endpoint_name": "b_api" - }, + "stage_name": "if_filter_exists", + "arguments": null, + "children": [ + { + "stage_name": "fbmessenger_tcp_reachability_check", + "arguments": { + "endpoint_name": "b_api" + }, + "children": [] + } + ] + }, + { + "stage_name": "discard", + "arguments": null, "children": [] } ] - }, - { - "stage_name": "discard", - "arguments": null, - "children": [] } ] } @@ -160,23 +176,20 @@ ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.14285714285714285 + }, "children": [ - { - "stage_name": "domain_name", - "arguments": { - "domain": "b-graph.facebook.com" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "dns_lookup_getaddrinfo", - "arguments": null, + "stage_name": "domain_name", + "arguments": { + "domain": "b-graph.facebook.com" + }, "children": [] }, { @@ -184,63 +197,74 @@ "arguments": null, "children": [ { - "stage_name": "if_filter_exists", + "stage_name": "dns_lookup_getaddrinfo", "arguments": null, - "children": [ - { - "stage_name": "fbmessenger_dns_consistency_check", - "arguments": { - "endpoint_name": "b_graph" - }, - "children": [] - } - ] + "children": [] }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "make_endpoints_for_port", - "arguments": { - "port": 443 - }, - "children": [] + "stage_name": "if_filter_exists", + "arguments": null, + "children": [ + { + "stage_name": "fbmessenger_dns_consistency_check", + "arguments": { + "endpoint_name": "b_graph" + }, + "children": [] + } + ] }, { - "stage_name": "new_endpoint_pipeline", + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "compose", + "stage_name": "make_endpoints_for_port", + "arguments": { + "port": 443 + }, + "children": [] + }, + { + "stage_name": "new_endpoint_pipeline", "arguments": null, "children": [ - { - "stage_name": "tcp_connect", - "arguments": null, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "if_filter_exists", + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "fbmessenger_tcp_reachability_check", - "arguments": { - "endpoint_name": "b_graph" - }, + "stage_name": "if_filter_exists", + "arguments": null, + "children": [ + { + "stage_name": "fbmessenger_tcp_reachability_check", + "arguments": { + "endpoint_name": "b_graph" + }, + "children": [] + } + ] + }, + { + "stage_name": "discard", + "arguments": null, "children": [] } ] - }, - { - "stage_name": "discard", - "arguments": null, - "children": [] } ] } @@ -257,23 +281,20 @@ ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.14285714285714285 + }, "children": [ - { - "stage_name": "domain_name", - "arguments": { - "domain": "edge-mqtt.facebook.com" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "dns_lookup_getaddrinfo", - "arguments": null, + "stage_name": "domain_name", + "arguments": { + "domain": "edge-mqtt.facebook.com" + }, "children": [] }, { @@ -281,63 +302,74 @@ "arguments": null, "children": [ { - "stage_name": "if_filter_exists", + "stage_name": "dns_lookup_getaddrinfo", "arguments": null, - "children": [ - { - "stage_name": "fbmessenger_dns_consistency_check", - "arguments": { - "endpoint_name": "edge" - }, - "children": [] - } - ] + "children": [] }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "make_endpoints_for_port", - "arguments": { - "port": 443 - }, - "children": [] + "stage_name": "if_filter_exists", + "arguments": null, + "children": [ + { + "stage_name": "fbmessenger_dns_consistency_check", + "arguments": { + "endpoint_name": "edge" + }, + "children": [] + } + ] }, { - "stage_name": "new_endpoint_pipeline", + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "compose", + "stage_name": "make_endpoints_for_port", + "arguments": { + "port": 443 + }, + "children": [] + }, + { + "stage_name": "new_endpoint_pipeline", "arguments": null, "children": [ - { - "stage_name": "tcp_connect", - "arguments": null, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "if_filter_exists", + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "fbmessenger_tcp_reachability_check", - "arguments": { - "endpoint_name": "edge" - }, + "stage_name": "if_filter_exists", + "arguments": null, + "children": [ + { + "stage_name": "fbmessenger_tcp_reachability_check", + "arguments": { + "endpoint_name": "edge" + }, + "children": [] + } + ] + }, + { + "stage_name": "discard", + "arguments": null, "children": [] } ] - }, - { - "stage_name": "discard", - "arguments": null, - "children": [] } ] } @@ -354,23 +386,20 @@ ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.14285714285714285 + }, "children": [ - { - "stage_name": "domain_name", - "arguments": { - "domain": "external.xx.fbcdn.net" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "dns_lookup_getaddrinfo", - "arguments": null, + "stage_name": "domain_name", + "arguments": { + "domain": "external.xx.fbcdn.net" + }, "children": [] }, { @@ -378,63 +407,74 @@ "arguments": null, "children": [ { - "stage_name": "if_filter_exists", + "stage_name": "dns_lookup_getaddrinfo", "arguments": null, - "children": [ - { - "stage_name": "fbmessenger_dns_consistency_check", - "arguments": { - "endpoint_name": "external_cdn" - }, - "children": [] - } - ] + "children": [] }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "make_endpoints_for_port", - "arguments": { - "port": 443 - }, - "children": [] + "stage_name": "if_filter_exists", + "arguments": null, + "children": [ + { + "stage_name": "fbmessenger_dns_consistency_check", + "arguments": { + "endpoint_name": "external_cdn" + }, + "children": [] + } + ] }, { - "stage_name": "new_endpoint_pipeline", + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "compose", + "stage_name": "make_endpoints_for_port", + "arguments": { + "port": 443 + }, + "children": [] + }, + { + "stage_name": "new_endpoint_pipeline", "arguments": null, "children": [ - { - "stage_name": "tcp_connect", - "arguments": null, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "if_filter_exists", + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "fbmessenger_tcp_reachability_check", - "arguments": { - "endpoint_name": "external_cdn" - }, + "stage_name": "if_filter_exists", + "arguments": null, + "children": [ + { + "stage_name": "fbmessenger_tcp_reachability_check", + "arguments": { + "endpoint_name": "external_cdn" + }, + "children": [] + } + ] + }, + { + "stage_name": "discard", + "arguments": null, "children": [] } ] - }, - { - "stage_name": "discard", - "arguments": null, - "children": [] } ] } @@ -451,23 +491,20 @@ ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.14285714285714285 + }, "children": [ - { - "stage_name": "domain_name", - "arguments": { - "domain": "scontent.xx.fbcdn.net" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "dns_lookup_getaddrinfo", - "arguments": null, + "stage_name": "domain_name", + "arguments": { + "domain": "scontent.xx.fbcdn.net" + }, "children": [] }, { @@ -475,63 +512,74 @@ "arguments": null, "children": [ { - "stage_name": "if_filter_exists", + "stage_name": "dns_lookup_getaddrinfo", "arguments": null, - "children": [ - { - "stage_name": "fbmessenger_dns_consistency_check", - "arguments": { - "endpoint_name": "scontent_cdn" - }, - "children": [] - } - ] + "children": [] }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "make_endpoints_for_port", - "arguments": { - "port": 443 - }, - "children": [] + "stage_name": "if_filter_exists", + "arguments": null, + "children": [ + { + "stage_name": "fbmessenger_dns_consistency_check", + "arguments": { + "endpoint_name": "scontent_cdn" + }, + "children": [] + } + ] }, { - "stage_name": "new_endpoint_pipeline", + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "compose", + "stage_name": "make_endpoints_for_port", + "arguments": { + "port": 443 + }, + "children": [] + }, + { + "stage_name": "new_endpoint_pipeline", "arguments": null, "children": [ - { - "stage_name": "tcp_connect", - "arguments": null, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "if_filter_exists", + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "fbmessenger_tcp_reachability_check", - "arguments": { - "endpoint_name": "scontent_cdn" - }, + "stage_name": "if_filter_exists", + "arguments": null, + "children": [ + { + "stage_name": "fbmessenger_tcp_reachability_check", + "arguments": { + "endpoint_name": "scontent_cdn" + }, + "children": [] + } + ] + }, + { + "stage_name": "discard", + "arguments": null, "children": [] } ] - }, - { - "stage_name": "discard", - "arguments": null, - "children": [] } ] } @@ -548,23 +596,20 @@ ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.14285714285714285 + }, "children": [ - { - "stage_name": "domain_name", - "arguments": { - "domain": "star.c10r.facebook.com" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "dns_lookup_getaddrinfo", - "arguments": null, + "stage_name": "domain_name", + "arguments": { + "domain": "star.c10r.facebook.com" + }, "children": [] }, { @@ -572,63 +617,74 @@ "arguments": null, "children": [ { - "stage_name": "if_filter_exists", + "stage_name": "dns_lookup_getaddrinfo", "arguments": null, - "children": [ - { - "stage_name": "fbmessenger_dns_consistency_check", - "arguments": { - "endpoint_name": "star" - }, - "children": [] - } - ] + "children": [] }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "make_endpoints_for_port", - "arguments": { - "port": 443 - }, - "children": [] + "stage_name": "if_filter_exists", + "arguments": null, + "children": [ + { + "stage_name": "fbmessenger_dns_consistency_check", + "arguments": { + "endpoint_name": "star" + }, + "children": [] + } + ] }, { - "stage_name": "new_endpoint_pipeline", + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "compose", + "stage_name": "make_endpoints_for_port", + "arguments": { + "port": 443 + }, + "children": [] + }, + { + "stage_name": "new_endpoint_pipeline", "arguments": null, "children": [ - { - "stage_name": "tcp_connect", - "arguments": null, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "if_filter_exists", + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "fbmessenger_tcp_reachability_check", - "arguments": { - "endpoint_name": "star" - }, + "stage_name": "if_filter_exists", + "arguments": null, + "children": [ + { + "stage_name": "fbmessenger_tcp_reachability_check", + "arguments": { + "endpoint_name": "star" + }, + "children": [] + } + ] + }, + { + "stage_name": "discard", + "arguments": null, "children": [] } ] - }, - { - "stage_name": "discard", - "arguments": null, - "children": [] } ] } diff --git a/testdata/riseupvpn.jsonc b/testdata/riseupvpn.jsonc index 34c40e6..f8e2ce2 100644 --- a/testdata/riseupvpn.jsonc +++ b/testdata/riseupvpn.jsonc @@ -15,1883 +15,2376 @@ "arguments": null, "children": [ { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "204.13.164.252:443", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "204.13.164.252:443", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "204.13.164.252:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "204.13.164.252:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "204.13.164.252:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "204.13.164.252:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "204.13.164.252:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "204.13.164.252:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "163.172.211.109:443", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "163.172.211.109:443", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "163.172.211.109:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "163.172.211.109:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "163.172.211.109:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "163.172.211.109:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "163.172.211.109:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "163.172.211.109:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "37.218.244.248:443", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "37.218.244.248:443", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "37.218.244.248:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "37.218.244.248:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "37.218.244.248:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "37.218.244.248:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "37.218.244.248:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "37.218.244.248:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "163.172.58.132:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "163.172.58.132:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "163.172.58.132:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "163.172.58.132:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "163.172.58.132:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "163.172.58.132:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "199.58.83.11:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "199.58.83.11:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "199.58.83.11:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "199.58.83.11:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "199.58.83.11:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "199.58.83.11:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "199.254.238.55:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "199.254.238.55:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "199.254.238.55:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "199.254.238.55:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "199.254.238.55:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "199.254.238.55:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "198.252.153.109:443", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "198.252.153.109:443", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "198.252.153.109:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "198.252.153.109:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "198.252.153.109:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "198.252.153.109:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "198.252.153.109:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "198.252.153.109:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "195.154.106.118:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "195.154.106.118:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "195.154.106.118:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "195.154.106.118:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "195.154.106.118:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "195.154.106.118:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.159.196.108:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.159.196.108:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.159.196.108:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.159.196.108:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.159.196.108:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.159.196.108:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.159.197.108:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.159.197.108:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.159.197.108:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.159.197.108:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.159.197.108:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.159.197.108:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "163.172.90.118:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "163.172.90.118:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "163.172.90.118:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "163.172.90.118:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "163.172.90.118:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "163.172.90.118:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.15.9.205:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.15.9.205:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.15.9.205:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.15.9.205:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.15.9.205:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.15.9.205:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.159.55.86:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.159.55.86:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.159.55.86:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.159.55.86:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.159.55.86:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.159.55.86:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.158.144.32:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.158.144.32:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.158.144.32:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.158.144.32:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.158.144.32:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.158.144.32:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.158.144.31:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.158.144.31:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.158.144.31:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.158.144.31:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.158.144.31:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.158.144.31:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "199.58.83.9:443", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "199.58.83.9:443", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "199.58.83.9:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "199.58.83.9:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "199.58.83.9:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "199.58.83.9:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "199.58.83.9:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "199.58.83.9:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.15.187.53:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.15.187.53:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.15.187.53:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.15.187.53:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "51.15.187.53:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "51.15.187.53:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "185.220.103.11:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "185.220.103.11:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "185.220.103.11:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "185.220.103.11:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "185.220.103.11:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "185.220.103.11:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "37.218.244.250:53", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "37.218.244.250:53", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "37.218.244.250:80", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "37.218.244.250:80", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "new_endpoint", - "arguments": { - "endpoint": "37.218.244.250:1194", - "domain": "" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tcp_connect", - "arguments": null, + "stage_name": "new_endpoint", + "arguments": { + "endpoint": "37.218.244.250:1194", + "domain": "" + }, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "tcp_connect", + "arguments": null, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "domain_name", - "arguments": { - "domain": "black.riseup.net" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "dns_lookup_getaddrinfo", - "arguments": null, + "stage_name": "domain_name", + "arguments": { + "domain": "black.riseup.net" + }, "children": [] }, { @@ -1899,32 +2392,32 @@ "arguments": null, "children": [ { - "stage_name": "make_endpoints_for_port", - "arguments": { - "port": 443 - }, + "stage_name": "dns_lookup_getaddrinfo", + "arguments": null, "children": [] }, { - "stage_name": "new_endpoint_pipeline", + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "compose", + "stage_name": "make_endpoints_for_port", + "arguments": { + "port": 443 + }, + "children": [] + }, + { + "stage_name": "new_endpoint_pipeline", "arguments": null, "children": [ - { - "stage_name": "tcp_connect", - "arguments": null, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tls_handshake", - "arguments": {}, + "stage_name": "tcp_connect", + "arguments": null, "children": [] }, { @@ -1932,8 +2425,8 @@ "arguments": null, "children": [ { - "stage_name": "http_connection_tls", - "arguments": null, + "stage_name": "tls_handshake", + "arguments": {}, "children": [] }, { @@ -1941,16 +2434,27 @@ "arguments": null, "children": [ { - "stage_name": "http_transaction", - "arguments": { - "url_path": "/ca.crt" - }, + "stage_name": "http_connection_tls", + "arguments": null, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "http_transaction", + "arguments": { + "url_path": "/ca.crt" + }, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } @@ -1969,23 +2473,20 @@ ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "domain_name", - "arguments": { - "domain": "riseup.net" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "dns_lookup_getaddrinfo", - "arguments": null, + "stage_name": "domain_name", + "arguments": { + "domain": "riseup.net" + }, "children": [] }, { @@ -1993,32 +2494,32 @@ "arguments": null, "children": [ { - "stage_name": "make_endpoints_for_port", - "arguments": { - "port": 443 - }, + "stage_name": "dns_lookup_getaddrinfo", + "arguments": null, "children": [] }, { - "stage_name": "new_endpoint_pipeline", + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "compose", + "stage_name": "make_endpoints_for_port", + "arguments": { + "port": 443 + }, + "children": [] + }, + { + "stage_name": "new_endpoint_pipeline", "arguments": null, "children": [ - { - "stage_name": "tcp_connect", - "arguments": null, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tls_handshake", - "arguments": {}, + "stage_name": "tcp_connect", + "arguments": null, "children": [] }, { @@ -2026,8 +2527,8 @@ "arguments": null, "children": [ { - "stage_name": "http_connection_tls", - "arguments": null, + "stage_name": "tls_handshake", + "arguments": {}, "children": [] }, { @@ -2035,16 +2536,27 @@ "arguments": null, "children": [ { - "stage_name": "http_transaction", - "arguments": { - "url_path": "/provider.json" - }, + "stage_name": "http_connection_tls", + "arguments": null, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "http_transaction", + "arguments": { + "url_path": "/provider.json" + }, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } @@ -2063,23 +2575,20 @@ ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "domain_name", - "arguments": { - "domain": "api.black.riseup.net" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "dns_lookup_getaddrinfo", - "arguments": null, + "stage_name": "domain_name", + "arguments": { + "domain": "api.black.riseup.net" + }, "children": [] }, { @@ -2087,36 +2596,32 @@ "arguments": null, "children": [ { - "stage_name": "make_endpoints_for_port", - "arguments": { - "port": 443 - }, + "stage_name": "dns_lookup_getaddrinfo", + "arguments": null, "children": [] }, { - "stage_name": "new_endpoint_pipeline", + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "compose", + "stage_name": "make_endpoints_for_port", + "arguments": { + "port": 443 + }, + "children": [] + }, + { + "stage_name": "new_endpoint_pipeline", "arguments": null, "children": [ - { - "stage_name": "tcp_connect", - "arguments": null, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tls_handshake", - "arguments": { - "x509_certs": [ - "-----BEGIN CERTIFICATE-----\nMIIFjTCCA3WgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBZMRgwFgYDVQQKDA9SaXNl\ndXAgTmV0d29ya3MxGzAZBgNVBAsMEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UE\nAwwXUmlzZXVwIE5ldHdvcmtzIFJvb3QgQ0EwHhcNMTQwNDI4MDAwMDAwWhcNMjQw\nNDI4MDAwMDAwWjBZMRgwFgYDVQQKDA9SaXNldXAgTmV0d29ya3MxGzAZBgNVBAsM\nEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UEAwwXUmlzZXVwIE5ldHdvcmtzIFJv\nb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC76J4ciMJ8Sg0m\nTP7DF2DT9zNe0Csk4myoMFC57rfJeqsAlJCv1XMzBmXrw8wq/9z7XHv6n/0sWU7a\n7cF2hLR33ktjwODlx7vorU39/lXLndo492ZBhXQtG1INMShyv+nlmzO6GT7ESfNE\nLliFitEzwIegpMqxCIHXFuobGSCWF4N0qLHkq/SYUMoOJ96O3hmPSl1kFDRMtWXY\niw1SEKjUvpyDJpVs3NGxeLCaA7bAWhDY5s5Yb2fA1o8ICAqhowurowJpW7n5ZuLK\n5VNTlNy6nZpkjt1QycYvNycffyPOFm/Q/RKDlvnorJIrihPkyniV3YY5cGgP+Qkx\nHUOT0uLA6LHtzfiyaOqkXwc4b0ZcQD5Vbf6Prd20Ppt6ei0zazkUPwxld3hgyw58\nm/4UIjG3PInWTNf293GngK2Bnz8Qx9e/6TueMSAn/3JBLem56E0WtmbLVjvko+LF\nPM5xA+m0BmuSJtrD1MUCXMhqYTtiOvgLBlUm5zkNxALzG+cXB28k6XikXt6MRG7q\nhzIPG38zwkooM55yy5i1YfcIi5NjMH6A+t4IJxxwb67MSb6UFOwg5kFokdONZcwj\nshczHdG9gLKSBIvrKa03Nd3W2dF9hMbRu//STcQxOailDBQCnXXfAATj9pYzdY4k\nha8VCAREGAKTDAex9oXf1yRuktES4QIDAQABo2AwXjAdBgNVHQ4EFgQUC4tdmLVu\nf9hwfK4AGliaet5KkcgwDgYDVR0PAQH/BAQDAgIEMAwGA1UdEwQFMAMBAf8wHwYD\nVR0jBBgwFoAUC4tdmLVuf9hwfK4AGliaet5KkcgwDQYJKoZIhvcNAQENBQADggIB\nAGzL+GRnYu99zFoy0bXJKOGCF5XUXP/3gIXPRDqQf5g7Cu/jYMID9dB3No4Zmf7v\nqHjiSXiS8jx1j/6/Luk6PpFbT7QYm4QLs1f4BlfZOti2KE8r7KRDPIecUsUXW6P/\n3GJAVYH/+7OjA39za9AieM7+H5BELGccGrM5wfl7JeEz8in+V2ZWDzHQO4hMkiTQ\n4ZckuaL201F68YpiItBNnJ9N5nHr1MRiGyApHmLXY/wvlrOpclh95qn+lG6/2jk7\n3AmihLOKYMlPwPakJg4PYczm3icFLgTpjV5sq2md9bRyAg3oPGfAuWHmKj2Ikqch\nTd5CHKGxEEWbGUWEMP0s1A/JHWiCbDigc4Cfxhy56CWG4q0tYtnc2GMw8OAUO6Wf\nXu5pYKNkzKSEtT/MrNJt44tTZWbKV/Pi/N2Fx36my7TgTUj7g3xcE9eF4JV2H/sg\ntsK3pwE0FEqGnT4qMFbixQmc8bGyuakr23wjMvfO7eZUxBuWYR2SkcP26sozF9PF\ntGhbZHQVGZUTVPyvwahMUEhbPGVerOW0IYpxkm0x/eaWdTc4vPpf/rIlgbAjarnJ\nUN9SaWRlWKSdP4haujnzCoJbM7dU9bjvlGZNyXEekgeT0W2qFeGGp+yyUWw8tNsp\n0BuC1b7uW/bBn/xKm319wXVDvBgZgcktMolak39V7DVO\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIBYjCCAQigAwIBAgIBATAKBggqhkjOPQQDAjAXMRUwEwYDVQQDEwxMRUFQIFJv\nb3QgQ0EwHhcNMjExMTAyMTkwNTM3WhcNMjYxMTAyMTkxMDM3WjAXMRUwEwYDVQQD\nEwxMRUFQIFJvb3QgQ0EwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQxOXBGu+gf\npjHzVteGTWL6XnFxtEnKMFpKaJkA/VOHmESzoLsZRQxt88GssxaqC01J17idQiqv\nzgNpedmtvFtyo0UwQzAOBgNVHQ8BAf8EBAMCAqQwEgYDVR0TAQH/BAgwBgEB/wIB\nATAdBgNVHQ4EFgQUZdoUlJrCIUNFrpffAq+LQjnwEz4wCgYIKoZIzj0EAwIDSAAw\nRQIgfr3w4tnRG+NdI3LsGPlsRktGK20xHTzsB3orB0yC6cICIQCB+/9y8nmSStfN\nVUMUyk2hNd7/kC8nL222TTD7VZUtsg==\n-----END CERTIFICATE-----\n" - ] - }, + "stage_name": "tcp_connect", + "arguments": null, "children": [] }, { @@ -2124,8 +2629,12 @@ "arguments": null, "children": [ { - "stage_name": "http_connection_tls", - "arguments": null, + "stage_name": "tls_handshake", + "arguments": { + "x509_certs": [ + "-----BEGIN CERTIFICATE-----\nMIIFjTCCA3WgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBZMRgwFgYDVQQKDA9SaXNl\ndXAgTmV0d29ya3MxGzAZBgNVBAsMEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UE\nAwwXUmlzZXVwIE5ldHdvcmtzIFJvb3QgQ0EwHhcNMTQwNDI4MDAwMDAwWhcNMjQw\nNDI4MDAwMDAwWjBZMRgwFgYDVQQKDA9SaXNldXAgTmV0d29ya3MxGzAZBgNVBAsM\nEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UEAwwXUmlzZXVwIE5ldHdvcmtzIFJv\nb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC76J4ciMJ8Sg0m\nTP7DF2DT9zNe0Csk4myoMFC57rfJeqsAlJCv1XMzBmXrw8wq/9z7XHv6n/0sWU7a\n7cF2hLR33ktjwODlx7vorU39/lXLndo492ZBhXQtG1INMShyv+nlmzO6GT7ESfNE\nLliFitEzwIegpMqxCIHXFuobGSCWF4N0qLHkq/SYUMoOJ96O3hmPSl1kFDRMtWXY\niw1SEKjUvpyDJpVs3NGxeLCaA7bAWhDY5s5Yb2fA1o8ICAqhowurowJpW7n5ZuLK\n5VNTlNy6nZpkjt1QycYvNycffyPOFm/Q/RKDlvnorJIrihPkyniV3YY5cGgP+Qkx\nHUOT0uLA6LHtzfiyaOqkXwc4b0ZcQD5Vbf6Prd20Ppt6ei0zazkUPwxld3hgyw58\nm/4UIjG3PInWTNf293GngK2Bnz8Qx9e/6TueMSAn/3JBLem56E0WtmbLVjvko+LF\nPM5xA+m0BmuSJtrD1MUCXMhqYTtiOvgLBlUm5zkNxALzG+cXB28k6XikXt6MRG7q\nhzIPG38zwkooM55yy5i1YfcIi5NjMH6A+t4IJxxwb67MSb6UFOwg5kFokdONZcwj\nshczHdG9gLKSBIvrKa03Nd3W2dF9hMbRu//STcQxOailDBQCnXXfAATj9pYzdY4k\nha8VCAREGAKTDAex9oXf1yRuktES4QIDAQABo2AwXjAdBgNVHQ4EFgQUC4tdmLVu\nf9hwfK4AGliaet5KkcgwDgYDVR0PAQH/BAQDAgIEMAwGA1UdEwQFMAMBAf8wHwYD\nVR0jBBgwFoAUC4tdmLVuf9hwfK4AGliaet5KkcgwDQYJKoZIhvcNAQENBQADggIB\nAGzL+GRnYu99zFoy0bXJKOGCF5XUXP/3gIXPRDqQf5g7Cu/jYMID9dB3No4Zmf7v\nqHjiSXiS8jx1j/6/Luk6PpFbT7QYm4QLs1f4BlfZOti2KE8r7KRDPIecUsUXW6P/\n3GJAVYH/+7OjA39za9AieM7+H5BELGccGrM5wfl7JeEz8in+V2ZWDzHQO4hMkiTQ\n4ZckuaL201F68YpiItBNnJ9N5nHr1MRiGyApHmLXY/wvlrOpclh95qn+lG6/2jk7\n3AmihLOKYMlPwPakJg4PYczm3icFLgTpjV5sq2md9bRyAg3oPGfAuWHmKj2Ikqch\nTd5CHKGxEEWbGUWEMP0s1A/JHWiCbDigc4Cfxhy56CWG4q0tYtnc2GMw8OAUO6Wf\nXu5pYKNkzKSEtT/MrNJt44tTZWbKV/Pi/N2Fx36my7TgTUj7g3xcE9eF4JV2H/sg\ntsK3pwE0FEqGnT4qMFbixQmc8bGyuakr23wjMvfO7eZUxBuWYR2SkcP26sozF9PF\ntGhbZHQVGZUTVPyvwahMUEhbPGVerOW0IYpxkm0x/eaWdTc4vPpf/rIlgbAjarnJ\nUN9SaWRlWKSdP4haujnzCoJbM7dU9bjvlGZNyXEekgeT0W2qFeGGp+yyUWw8tNsp\n0BuC1b7uW/bBn/xKm319wXVDvBgZgcktMolak39V7DVO\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIBYjCCAQigAwIBAgIBATAKBggqhkjOPQQDAjAXMRUwEwYDVQQDEwxMRUFQIFJv\nb3QgQ0EwHhcNMjExMTAyMTkwNTM3WhcNMjYxMTAyMTkxMDM3WjAXMRUwEwYDVQQD\nEwxMRUFQIFJvb3QgQ0EwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQxOXBGu+gf\npjHzVteGTWL6XnFxtEnKMFpKaJkA/VOHmESzoLsZRQxt88GssxaqC01J17idQiqv\nzgNpedmtvFtyo0UwQzAOBgNVHQ8BAf8EBAMCAqQwEgYDVR0TAQH/BAgwBgEB/wIB\nATAdBgNVHQ4EFgQUZdoUlJrCIUNFrpffAq+LQjnwEz4wCgYIKoZIzj0EAwIDSAAw\nRQIgfr3w4tnRG+NdI3LsGPlsRktGK20xHTzsB3orB0yC6cICIQCB+/9y8nmSStfN\nVUMUyk2hNd7/kC8nL222TTD7VZUtsg==\n-----END CERTIFICATE-----\n" + ] + }, "children": [] }, { @@ -2133,16 +2642,27 @@ "arguments": null, "children": [ { - "stage_name": "http_transaction", - "arguments": { - "url_path": "/3/config/eip-service.json" - }, + "stage_name": "http_connection_tls", + "arguments": null, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "http_transaction", + "arguments": { + "url_path": "/3/config/eip-service.json" + }, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] } @@ -2161,23 +2681,20 @@ ] }, { - "stage_name": "compose", - "arguments": null, + "stage_name": "wrap_with_progress", + "arguments": { + "delta": 0.015151515151515152 + }, "children": [ - { - "stage_name": "domain_name", - "arguments": { - "domain": "api.black.riseup.net" - }, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "dns_lookup_getaddrinfo", - "arguments": null, + "stage_name": "domain_name", + "arguments": { + "domain": "api.black.riseup.net" + }, "children": [] }, { @@ -2185,36 +2702,32 @@ "arguments": null, "children": [ { - "stage_name": "make_endpoints_for_port", - "arguments": { - "port": 9001 - }, + "stage_name": "dns_lookup_getaddrinfo", + "arguments": null, "children": [] }, { - "stage_name": "new_endpoint_pipeline", + "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "compose", + "stage_name": "make_endpoints_for_port", + "arguments": { + "port": 9001 + }, + "children": [] + }, + { + "stage_name": "new_endpoint_pipeline", "arguments": null, "children": [ - { - "stage_name": "tcp_connect", - "arguments": null, - "children": [] - }, { "stage_name": "compose", "arguments": null, "children": [ { - "stage_name": "tls_handshake", - "arguments": { - "x509_certs": [ - "-----BEGIN CERTIFICATE-----\nMIIFjTCCA3WgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBZMRgwFgYDVQQKDA9SaXNl\ndXAgTmV0d29ya3MxGzAZBgNVBAsMEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UE\nAwwXUmlzZXVwIE5ldHdvcmtzIFJvb3QgQ0EwHhcNMTQwNDI4MDAwMDAwWhcNMjQw\nNDI4MDAwMDAwWjBZMRgwFgYDVQQKDA9SaXNldXAgTmV0d29ya3MxGzAZBgNVBAsM\nEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UEAwwXUmlzZXVwIE5ldHdvcmtzIFJv\nb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC76J4ciMJ8Sg0m\nTP7DF2DT9zNe0Csk4myoMFC57rfJeqsAlJCv1XMzBmXrw8wq/9z7XHv6n/0sWU7a\n7cF2hLR33ktjwODlx7vorU39/lXLndo492ZBhXQtG1INMShyv+nlmzO6GT7ESfNE\nLliFitEzwIegpMqxCIHXFuobGSCWF4N0qLHkq/SYUMoOJ96O3hmPSl1kFDRMtWXY\niw1SEKjUvpyDJpVs3NGxeLCaA7bAWhDY5s5Yb2fA1o8ICAqhowurowJpW7n5ZuLK\n5VNTlNy6nZpkjt1QycYvNycffyPOFm/Q/RKDlvnorJIrihPkyniV3YY5cGgP+Qkx\nHUOT0uLA6LHtzfiyaOqkXwc4b0ZcQD5Vbf6Prd20Ppt6ei0zazkUPwxld3hgyw58\nm/4UIjG3PInWTNf293GngK2Bnz8Qx9e/6TueMSAn/3JBLem56E0WtmbLVjvko+LF\nPM5xA+m0BmuSJtrD1MUCXMhqYTtiOvgLBlUm5zkNxALzG+cXB28k6XikXt6MRG7q\nhzIPG38zwkooM55yy5i1YfcIi5NjMH6A+t4IJxxwb67MSb6UFOwg5kFokdONZcwj\nshczHdG9gLKSBIvrKa03Nd3W2dF9hMbRu//STcQxOailDBQCnXXfAATj9pYzdY4k\nha8VCAREGAKTDAex9oXf1yRuktES4QIDAQABo2AwXjAdBgNVHQ4EFgQUC4tdmLVu\nf9hwfK4AGliaet5KkcgwDgYDVR0PAQH/BAQDAgIEMAwGA1UdEwQFMAMBAf8wHwYD\nVR0jBBgwFoAUC4tdmLVuf9hwfK4AGliaet5KkcgwDQYJKoZIhvcNAQENBQADggIB\nAGzL+GRnYu99zFoy0bXJKOGCF5XUXP/3gIXPRDqQf5g7Cu/jYMID9dB3No4Zmf7v\nqHjiSXiS8jx1j/6/Luk6PpFbT7QYm4QLs1f4BlfZOti2KE8r7KRDPIecUsUXW6P/\n3GJAVYH/+7OjA39za9AieM7+H5BELGccGrM5wfl7JeEz8in+V2ZWDzHQO4hMkiTQ\n4ZckuaL201F68YpiItBNnJ9N5nHr1MRiGyApHmLXY/wvlrOpclh95qn+lG6/2jk7\n3AmihLOKYMlPwPakJg4PYczm3icFLgTpjV5sq2md9bRyAg3oPGfAuWHmKj2Ikqch\nTd5CHKGxEEWbGUWEMP0s1A/JHWiCbDigc4Cfxhy56CWG4q0tYtnc2GMw8OAUO6Wf\nXu5pYKNkzKSEtT/MrNJt44tTZWbKV/Pi/N2Fx36my7TgTUj7g3xcE9eF4JV2H/sg\ntsK3pwE0FEqGnT4qMFbixQmc8bGyuakr23wjMvfO7eZUxBuWYR2SkcP26sozF9PF\ntGhbZHQVGZUTVPyvwahMUEhbPGVerOW0IYpxkm0x/eaWdTc4vPpf/rIlgbAjarnJ\nUN9SaWRlWKSdP4haujnzCoJbM7dU9bjvlGZNyXEekgeT0W2qFeGGp+yyUWw8tNsp\n0BuC1b7uW/bBn/xKm319wXVDvBgZgcktMolak39V7DVO\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIBYjCCAQigAwIBAgIBATAKBggqhkjOPQQDAjAXMRUwEwYDVQQDEwxMRUFQIFJv\nb3QgQ0EwHhcNMjExMTAyMTkwNTM3WhcNMjYxMTAyMTkxMDM3WjAXMRUwEwYDVQQD\nEwxMRUFQIFJvb3QgQ0EwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQxOXBGu+gf\npjHzVteGTWL6XnFxtEnKMFpKaJkA/VOHmESzoLsZRQxt88GssxaqC01J17idQiqv\nzgNpedmtvFtyo0UwQzAOBgNVHQ8BAf8EBAMCAqQwEgYDVR0TAQH/BAgwBgEB/wIB\nATAdBgNVHQ4EFgQUZdoUlJrCIUNFrpffAq+LQjnwEz4wCgYIKoZIzj0EAwIDSAAw\nRQIgfr3w4tnRG+NdI3LsGPlsRktGK20xHTzsB3orB0yC6cICIQCB+/9y8nmSStfN\nVUMUyk2hNd7/kC8nL222TTD7VZUtsg==\n-----END CERTIFICATE-----\n" - ] - }, + "stage_name": "tcp_connect", + "arguments": null, "children": [] }, { @@ -2222,8 +2735,12 @@ "arguments": null, "children": [ { - "stage_name": "http_connection_tls", - "arguments": null, + "stage_name": "tls_handshake", + "arguments": { + "x509_certs": [ + "-----BEGIN CERTIFICATE-----\nMIIFjTCCA3WgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBZMRgwFgYDVQQKDA9SaXNl\ndXAgTmV0d29ya3MxGzAZBgNVBAsMEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UE\nAwwXUmlzZXVwIE5ldHdvcmtzIFJvb3QgQ0EwHhcNMTQwNDI4MDAwMDAwWhcNMjQw\nNDI4MDAwMDAwWjBZMRgwFgYDVQQKDA9SaXNldXAgTmV0d29ya3MxGzAZBgNVBAsM\nEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UEAwwXUmlzZXVwIE5ldHdvcmtzIFJv\nb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC76J4ciMJ8Sg0m\nTP7DF2DT9zNe0Csk4myoMFC57rfJeqsAlJCv1XMzBmXrw8wq/9z7XHv6n/0sWU7a\n7cF2hLR33ktjwODlx7vorU39/lXLndo492ZBhXQtG1INMShyv+nlmzO6GT7ESfNE\nLliFitEzwIegpMqxCIHXFuobGSCWF4N0qLHkq/SYUMoOJ96O3hmPSl1kFDRMtWXY\niw1SEKjUvpyDJpVs3NGxeLCaA7bAWhDY5s5Yb2fA1o8ICAqhowurowJpW7n5ZuLK\n5VNTlNy6nZpkjt1QycYvNycffyPOFm/Q/RKDlvnorJIrihPkyniV3YY5cGgP+Qkx\nHUOT0uLA6LHtzfiyaOqkXwc4b0ZcQD5Vbf6Prd20Ppt6ei0zazkUPwxld3hgyw58\nm/4UIjG3PInWTNf293GngK2Bnz8Qx9e/6TueMSAn/3JBLem56E0WtmbLVjvko+LF\nPM5xA+m0BmuSJtrD1MUCXMhqYTtiOvgLBlUm5zkNxALzG+cXB28k6XikXt6MRG7q\nhzIPG38zwkooM55yy5i1YfcIi5NjMH6A+t4IJxxwb67MSb6UFOwg5kFokdONZcwj\nshczHdG9gLKSBIvrKa03Nd3W2dF9hMbRu//STcQxOailDBQCnXXfAATj9pYzdY4k\nha8VCAREGAKTDAex9oXf1yRuktES4QIDAQABo2AwXjAdBgNVHQ4EFgQUC4tdmLVu\nf9hwfK4AGliaet5KkcgwDgYDVR0PAQH/BAQDAgIEMAwGA1UdEwQFMAMBAf8wHwYD\nVR0jBBgwFoAUC4tdmLVuf9hwfK4AGliaet5KkcgwDQYJKoZIhvcNAQENBQADggIB\nAGzL+GRnYu99zFoy0bXJKOGCF5XUXP/3gIXPRDqQf5g7Cu/jYMID9dB3No4Zmf7v\nqHjiSXiS8jx1j/6/Luk6PpFbT7QYm4QLs1f4BlfZOti2KE8r7KRDPIecUsUXW6P/\n3GJAVYH/+7OjA39za9AieM7+H5BELGccGrM5wfl7JeEz8in+V2ZWDzHQO4hMkiTQ\n4ZckuaL201F68YpiItBNnJ9N5nHr1MRiGyApHmLXY/wvlrOpclh95qn+lG6/2jk7\n3AmihLOKYMlPwPakJg4PYczm3icFLgTpjV5sq2md9bRyAg3oPGfAuWHmKj2Ikqch\nTd5CHKGxEEWbGUWEMP0s1A/JHWiCbDigc4Cfxhy56CWG4q0tYtnc2GMw8OAUO6Wf\nXu5pYKNkzKSEtT/MrNJt44tTZWbKV/Pi/N2Fx36my7TgTUj7g3xcE9eF4JV2H/sg\ntsK3pwE0FEqGnT4qMFbixQmc8bGyuakr23wjMvfO7eZUxBuWYR2SkcP26sozF9PF\ntGhbZHQVGZUTVPyvwahMUEhbPGVerOW0IYpxkm0x/eaWdTc4vPpf/rIlgbAjarnJ\nUN9SaWRlWKSdP4haujnzCoJbM7dU9bjvlGZNyXEekgeT0W2qFeGGp+yyUWw8tNsp\n0BuC1b7uW/bBn/xKm319wXVDvBgZgcktMolak39V7DVO\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIBYjCCAQigAwIBAgIBATAKBggqhkjOPQQDAjAXMRUwEwYDVQQDEwxMRUFQIFJv\nb3QgQ0EwHhcNMjExMTAyMTkwNTM3WhcNMjYxMTAyMTkxMDM3WjAXMRUwEwYDVQQD\nEwxMRUFQIFJvb3QgQ0EwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQxOXBGu+gf\npjHzVteGTWL6XnFxtEnKMFpKaJkA/VOHmESzoLsZRQxt88GssxaqC01J17idQiqv\nzgNpedmtvFtyo0UwQzAOBgNVHQ8BAf8EBAMCAqQwEgYDVR0TAQH/BAgwBgEB/wIB\nATAdBgNVHQ4EFgQUZdoUlJrCIUNFrpffAq+LQjnwEz4wCgYIKoZIzj0EAwIDSAAw\nRQIgfr3w4tnRG+NdI3LsGPlsRktGK20xHTzsB3orB0yC6cICIQCB+/9y8nmSStfN\nVUMUyk2hNd7/kC8nL222TTD7VZUtsg==\n-----END CERTIFICATE-----\n" + ] + }, "children": [] }, { @@ -2231,16 +2748,27 @@ "arguments": null, "children": [ { - "stage_name": "http_transaction", - "arguments": { - "url_path": "/json" - }, + "stage_name": "http_connection_tls", + "arguments": null, "children": [] }, { - "stage_name": "discard", + "stage_name": "compose", "arguments": null, - "children": [] + "children": [ + { + "stage_name": "http_transaction", + "arguments": { + "url_path": "/json" + }, + "children": [] + }, + { + "stage_name": "discard", + "arguments": null, + "children": [] + } + ] } ] }