Skip to content

Commit

Permalink
fix(jit): handle scalar values (#2408)
Browse files Browse the repository at this point in the history
  • Loading branch information
meskill authored Jul 16, 2024
1 parent 806830f commit eb1fdd1
Show file tree
Hide file tree
Showing 14 changed files with 97 additions and 7 deletions.
9 changes: 8 additions & 1 deletion src/core/blueprint/index.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ use indexmap::IndexMap;
use crate::core::blueprint::{
Blueprint, Definition, FieldDefinition, InputFieldDefinition, SchemaDefinition,
};
use crate::core::scalar::is_predefined_scalar;

///
/// A read optimized index of all the fields in the Blueprint. Provide O(1)
/// A read optimized index of all the types in the Blueprint. Provide O(1)
/// access to getting any field information.

pub struct Index {
Expand All @@ -29,6 +30,12 @@ impl QueryField {
}

impl Index {
pub fn type_is_scalar(&self, type_name: &str) -> bool {
let def = self.map.get(type_name).map(|(def, _)| def);

matches!(def, Some(Definition::Scalar(_))) || is_predefined_scalar(type_name)
}

pub fn get_field(&self, type_name: &str, field_name: &str) -> Option<&QueryField> {
self.map
.get(type_name)
Expand Down
1 change: 1 addition & 0 deletions src/core/jit/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,7 @@ impl Builder {
id,
name,
ir,
is_scalar: self.index.type_is_scalar(type_of.name()),
type_of,
skip,
include,
Expand Down
26 changes: 25 additions & 1 deletion src/core/jit/error.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use async_graphql::parser::types::OperationType;
use async_graphql::ErrorExtensions;
use async_graphql::{ErrorExtensions, PathSegment};
use thiserror::Error;

#[derive(Error, Debug, Clone)]
Expand All @@ -18,6 +18,14 @@ pub enum ResolveInputError {
VariableIsNotFound(String),
}

#[derive(Error, Debug, Clone)]
pub enum ValidationError {
// TODO: replace with sane error message. Right now, it's defined as is only for compatibility
// with async_graphql error message for this case
#[error(r#"internal: invalid value for scalar "{type_of}", expected "FieldValue::Value""#)]
ScalarInvalid { type_of: String, path: String },
}

#[derive(Debug, Clone, Error)]
pub enum Error {
#[error("Build error: {0}")]
Expand All @@ -26,6 +34,8 @@ pub enum Error {
ParseError(#[from] async_graphql::parser::Error),
#[error(transparent)]
IR(#[from] crate::core::ir::Error),
#[error(transparent)]
Validation(#[from] ValidationError),
}

impl ErrorExtensions for Error {
Expand All @@ -34,6 +44,20 @@ impl ErrorExtensions for Error {
Error::BuildError(error) => error.extend(),
Error::ParseError(error) => error.extend(),
Error::IR(error) => error.extend(),
Error::Validation(error) => error.extend(),
}
}
}

impl Error {
pub fn path(&self) -> Vec<PathSegment> {
match self {
Error::Validation(error) => match error {
ValidationError::ScalarInvalid { type_of: _, path } => {
vec![PathSegment::Field(path.clone())]
}
},
_ => Vec::new(),
}
}
}
Expand Down
5 changes: 5 additions & 0 deletions src/core/jit/model.rs
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ pub struct Field<Extensions, Input> {
pub args: Vec<Arg<Input>>,
pub extensions: Option<Extensions>,
pub pos: Pos,
pub is_scalar: bool,
}

#[derive(Clone, Debug, PartialEq)]
Expand Down Expand Up @@ -138,6 +139,7 @@ impl<Extensions, Input> Field<Extensions, Input> {
.into_iter()
.map(|arg| arg.try_map(&map))
.collect::<Result<_, _>>()?,
is_scalar: self.is_scalar,
})
}
}
Expand Down Expand Up @@ -189,6 +191,7 @@ impl<Input> Field<Flat, Input> {
args: self.args,
pos: self.pos,
extensions,
is_scalar: self.is_scalar,
}
}
}
Expand All @@ -208,6 +211,8 @@ impl<Extensions: Debug, Input: Debug> Debug for Field<Extensions, Input> {
if self.extensions.is_some() {
debug_struct.field("extensions", &self.extensions);
}
debug_struct.field("is_scalar", &self.is_scalar);

debug_struct.finish()
}
}
Expand Down
8 changes: 5 additions & 3 deletions src/core/jit/response.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,13 @@ impl Response<async_graphql::Value, jit::Error> {
resp = resp.extension(name, value);
}
for error in self.errors {
let extensions = error.node.extend().extensions;
let mut server_error =
async_graphql::ServerError::new(error.node.to_string(), Some(error.pos));
let pos = error.pos;
let error = error.node;
let extensions = error.extend().extensions;
let mut server_error = async_graphql::ServerError::new(error.to_string(), Some(pos));

server_error.extensions = extensions;
server_error.path = error.path();

resp.errors.push(server_error);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,11 @@ expression: plan.into_nested()
id: 1,
name: "id",
type_of: ID!,
is_scalar: true,
},
],
),
),
is_scalar: false,
},
]
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,23 @@ expression: plan.into_nested()
id: 1,
name: "name",
type_of: String!,
is_scalar: true,
},
Field {
id: 2,
name: "email",
type_of: String!,
is_scalar: true,
},
Field {
id: 3,
name: "phone",
type_of: String,
is_scalar: true,
},
],
),
),
is_scalar: false,
},
]
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,22 @@ expression: plan.into_nested()
id: 2,
name: "id",
type_of: ID!,
is_scalar: true,
},
Field {
id: 3,
name: "name",
type_of: String!,
is_scalar: true,
},
],
),
),
is_scalar: false,
},
],
),
),
is_scalar: false,
},
]
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,18 @@ expression: plan.into_nested()
id: 1,
name: "id",
type_of: ID!,
is_scalar: true,
},
Field {
id: 2,
name: "username",
type_of: String!,
is_scalar: true,
},
],
),
),
is_scalar: false,
},
Field {
id: 3,
Expand All @@ -50,14 +53,17 @@ expression: plan.into_nested()
id: 4,
name: "id",
type_of: ID!,
is_scalar: true,
},
Field {
id: 5,
name: "title",
type_of: String!,
is_scalar: true,
},
],
),
),
is_scalar: false,
},
]
Original file line number Diff line number Diff line change
Expand Up @@ -59,34 +59,41 @@ expression: plan.into_nested()
id: 1,
name: "id",
type_of: ID!,
is_scalar: true,
},
Field {
id: 2,
name: "name",
type_of: String!,
is_scalar: true,
},
Field {
id: 3,
name: "email",
type_of: String!,
is_scalar: true,
},
Field {
id: 4,
name: "phone",
type_of: String,
is_scalar: true,
},
Field {
id: 5,
name: "website",
type_of: String,
is_scalar: true,
},
Field {
id: 6,
name: "username",
type_of: String!,
is_scalar: true,
},
],
),
),
is_scalar: false,
},
]
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,16 @@ expression: plan.into_nested()
id: 2,
name: "id",
type_of: ID!,
is_scalar: true,
},
],
),
),
is_scalar: false,
},
],
),
),
is_scalar: false,
},
]
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
source: src/core/jit/builder.rs
expression: plan
expression: plan.into_nested()
---
[
Field {
Expand All @@ -21,5 +21,6 @@ expression: plan
default_value: None,
},
],
is_scalar: false,
},
]
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,17 @@ expression: plan.into_nested()
id: 1,
name: "id",
type_of: ID!,
is_scalar: true,
},
Field {
id: 2,
name: "name",
type_of: String!,
is_scalar: true,
},
],
),
),
is_scalar: false,
},
]
23 changes: 22 additions & 1 deletion src/core/jit/synth/synth_const.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@ use indexmap::IndexMap;
use super::Synthesizer;
use crate::core::jit::model::{Field, Nested};
use crate::core::jit::store::{Data, Store};
use crate::core::jit::{DataPath, Error, OperationPlan, Variable, Variables};
use crate::core::jit::{DataPath, Error, OperationPlan, ValidationError, Variable, Variables};
use crate::core::json::JsonLike;
use crate::core::scalar::get_scalar;

pub struct Synth {
selection: Vec<Field<Nested<ConstValue>, ConstValue>>,
Expand Down Expand Up @@ -127,6 +128,26 @@ impl Synth {
let include = self.include(node);

match parent {
// scalar values should be returned as is
val if node.is_scalar => {
let validation = get_scalar(node.type_of.name());

// TODO: add validation for input type as well. But input types are not checked
// by async_graphql anyway so it should be done after replacing
// default engine with JIT
if validation(val) {
Ok(val.clone())
} else {
Err(Positioned {
pos: node.pos,
node: ValidationError::ScalarInvalid {
type_of: node.type_of.name().to_string(),
path: node.name.clone(),
}
.into(),
})
}
}
ConstValue::Object(obj) => {
let mut ans = IndexMap::default();
if include {
Expand Down

2 comments on commit eb1fdd1

@github-actions
Copy link

Choose a reason for hiding this comment

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

running 228 tests
test run_execution_spec::add-field-index-list.md ... ok
test run_execution_spec::add-field-many.md ... ok
test run_execution_spec::add-field-many-list.md ... ok
test run_execution_spec::add-field-modify.md ... ok
test run_execution_spec::add-field-with-modify.md ... ok
test run_execution_spec::add-field-with-composition.md ... ok
test run_execution_spec::add-field.md ... ok
test run_execution_spec::apollo-tracing.md ... ok
test run_execution_spec::async-cache-disabled.md ... ok
test run_execution_spec::async-cache-enabled.md ... ok
test run_execution_spec::async-cache-global.md ... ok
test run_execution_spec::async-cache-enable-multiple-resolvers.md ... FAILED
test run_execution_spec::async-cache-inflight-request.md ... ok
test run_execution_spec::auth-protected-without-auth.md ... ok
test run_execution_spec::auth-basic.md ... ok
test run_execution_spec::auth-jwt.md ... ok
test run_execution_spec::batching-disabled.md ... ok
test run_execution_spec::auth.md ... ok
test run_execution_spec::batching-default.md ... ok
test run_execution_spec::batching-group-by-default.md ... ok
test run_execution_spec::batching-group-by.md ... ok
test run_execution_spec::batching-post.md ... ok
test run_execution_spec::batching.md ... FAILED
test run_execution_spec::cache-control.md ... ok
test run_execution_spec::caching-collision.md ... ok
test run_execution_spec::caching.md ... ok
test run_execution_spec::call-graphql-datasource.md ... FAILED
test run_execution_spec::call-mutation.md ... ok
test run_execution_spec::call-multiple-steps-piping.md ... ok
test run_execution_spec::call-operator.md ... FAILED
test run_execution_spec::cors-allow-cred-true.md ... ok
test run_execution_spec::cors-invalid-expose-headers.md ... ok
test run_execution_spec::cors-invalid-headers.md ... ok
test run_execution_spec::cors-invalid-methods.md ... ok
test run_execution_spec::cors-invalid-origins.md ... ok
test run_execution_spec::cors-allow-cred-false.md ... ok
test run_execution_spec::custom-headers.md ... ok
test run_execution_spec::cors-allow-cred-vary.md ... ok
test run_execution_spec::dedupe_batch_query_execution.md ... ok
test run_execution_spec::default-value-config.md ... ok
test run_execution_spec::default-value-arg.md ... ok
test run_execution_spec::experimental-headers-error.md ... ok
test run_execution_spec::env-value.md ... ok
test run_execution_spec::experimental-headers.md ... ok
test run_execution_spec::graphql-dataloader-batch-request.md ... FAILED
test run_execution_spec::graphql-dataloader-no-batch-request.md ... FAILED
test run_execution_spec::graphql-datasource-errors.md ... FAILED
test run_execution_spec::graphql-datasource-mutation.md ... FAILED
test run_execution_spec::graphql-datasource-no-args.md ... FAILED
test run_execution_spec::graphql-datasource-query-directives.md ... FAILED
test run_execution_spec::graphql-datasource-with-empty-enum.md ... ok
test run_execution_spec::graphql-datasource-with-args.md ... FAILED
test run_execution_spec::graphql-nested-datasource.md ... FAILED
test run_execution_spec::graphql-datasource-with-mandatory-enum.md ... FAILED
test run_execution_spec::grpc-batch.md ... ok
test run_execution_spec::grpc-json.md ... ok
test run_execution_spec::grpc-error.md ... ok
test run_execution_spec::grpc-map.md ... ok
test run_execution_spec::grpc-override-url-from-upstream.md ... ok
test run_execution_spec::grpc-proto-with-same-package.md ... ok
test run_execution_spec::grpc-oneof.md ... FAILED
test run_execution_spec::grpc-reflection.md ... ok
test run_execution_spec::grpc-simple.md ... ok
test run_execution_spec::grpc-url-from-upstream.md ... ok
test run_execution_spec::https.md ... ok
test run_execution_spec::inline-index-list.md ... ok
test run_execution_spec::inline-field.md ... FAILED
test run_execution_spec::input-type-protected-error.md ... ok
test run_execution_spec::io-cache.md ... ok
test run_execution_spec::inline-many-list.md ... ok
test run_execution_spec::inline-many.md ... ok
test run_execution_spec::js-directive.md ... FAILED
test run_execution_spec::modified-field.md ... ok
test run_execution_spec::mutation-put.md ... ok
test run_execution_spec::mutation.md ... ok
test run_execution_spec::jsonplaceholder-call-post.md ... ok
test run_execution_spec::n-plus-one-list.md ... ok
test run_execution_spec::n-plus-one.md ... ok
test run_execution_spec::nested-objects.md ... ok
test run_execution_spec::nesting-level3.md ... ok
test run_execution_spec::nullable-arg-query.md ... ok
test run_execution_spec::omit-index-list.md ... ok
test run_execution_spec::omit-resolved-by-parent.md ... FAILED
test run_execution_spec::recursive-types-no-resolver.md ... ok
test run_execution_spec::recursive-types-json.md ... FAILED
test run_execution_spec::omit-many.md ... ok
test run_execution_spec::recursive-types.md ... FAILED
test run_execution_spec::ref-other-nested.md ... ok
test run_execution_spec::ref-other.md ... ok
test run_execution_spec::resolve-with-headers.md ... ok
test run_execution_spec::rename-field.md ... ok
test run_execution_spec::request-to-upstream-batching.md ... ok
test run_execution_spec::rest-api-error.md ... ok
test run_execution_spec::resolve-with-vars.md ... ok
test run_execution_spec::resolved-by-parent.md ... FAILED
test run_execution_spec::rest-api-post.md ... ok
test run_execution_spec::rest-api.md ... ok
test run_execution_spec::showcase.md ... ok
test run_execution_spec::test-add-field-error.md ... ok
test run_execution_spec::simple-query.md ... ok
test run_execution_spec::simple-graphql.md ... ok
test run_execution_spec::test-add-field-list.md ... ok
test run_execution_spec::test-all-blueprint-errors.md ... ok
test run_execution_spec::test-batch-operator-post.md ... ok
test run_execution_spec::test-add-link-to-empty-config.md ... ok
test run_execution_spec::test-add-field.md ... ok
test run_execution_spec::test-call-operator-errors.md ... ok
test run_execution_spec::test-conflict-allowed-headers.md ... ok
test run_execution_spec::test-conflict-vars.md ... ok
test run_execution_spec::test-batching-group-by.md ... ok
test run_execution_spec::test-cache.md ... ok
test run_execution_spec::test-custom-scalar.md ... ok
test run_execution_spec::test-dbl-usage-many.md ... ok
test run_execution_spec::test-directives-undef-null-fields.md ... ok
test run_execution_spec::test-duplicated-link.md ... ok
test run_execution_spec::test-empty-link.md ... ok
test run_execution_spec::test-custom-types.md ... ok
test run_execution_spec::test-enable-jit.md ... ok
test run_execution_spec::test-description-many.md ... ok
test run_execution_spec::test-enum-aliases.md ... ok
test run_execution_spec::test-enum-empty.md ... ok
test run_execution_spec::test-enum-default.md ... ok
test run_execution_spec::test-enum-merge.md ... ok
test run_execution_spec::test-expr-error.md ... ok
test run_execution_spec::test-expr-scalar-as-string.md ... ok
test run_execution_spec::test-expr-with-add-field.md ... ok
test run_execution_spec::test-expr-with-inline.md ... ok
test run_execution_spec::test-enum-description.md ... FAILED
test run_execution_spec::test-enum.md ... FAILED
test run_execution_spec::test-field-already-implemented-from-Interface.md ... ok
test run_execution_spec::test-graphqlsource-no-base-url.md ... ok
test run_execution_spec::test-expr-with-mustache.md ... ok
test run_execution_spec::test-groupby-without-batching.md ... ok
test run_execution_spec::test-grpc-group-by.md ... ok
test run_execution_spec::test-grpc-invalid-method-format.md ... ok
test run_execution_spec::test-grpc-invalid-proto-id.md ... ok
test run_execution_spec::test-grpc-missing-fields.md ... ok
test run_execution_spec::test-grpc-nested-data.md ... ok
test run_execution_spec::test-grpc-nested-optional.md ... ok
test run_execution_spec::test-grpc-optional.md ... ok
test run_execution_spec::test-grpc-proto-path.md ... ok
test run_execution_spec::test-grpc-service-method.md ... ok
test run_execution_spec::test-grpc-service.md ... ok
test run_execution_spec::test-expr.md ... ok
test run_execution_spec::test-hostname-faliure.md ... ok
test run_execution_spec::test-graphqlsource.md ... ok
test run_execution_spec::test-grpc.md ... ok
test run_execution_spec::test-http-baseurl.md ... ok
test run_execution_spec::test-http-with-add-field.md ... ok
test run_execution_spec::test-http-with-inline.md ... ok
test run_execution_spec::test-http-headers.md ... ok
test run_execution_spec::test-http-with-mustache-expr.md ... ok
test run_execution_spec::test-inline-error.md ... ok
test run_execution_spec::test-http-tmpl.md ... ok
test run_execution_spec::test-http.md ... ok
test run_execution_spec::test-inline.md ... ok
test run_execution_spec::test-inline-list.md ... ok
test run_execution_spec::test-input-out.md ... FAILED
test run_execution_spec::test-input-with-arg-out.md ... FAILED
test run_execution_spec::test-input-documentation.md ... ok
test run_execution_spec::test-interface-from-json.md ... ok
test run_execution_spec::test-invalid-query-in-http.md ... ok
test run_execution_spec::test-invalid-server.md ... ok
test run_execution_spec::test-js-multi-onRequest-handlers.md ... ok
test run_execution_spec::test-js-multiple-scripts.md ... ok
test run_execution_spec::test-interface-result.md ... ok
test run_execution_spec::test-interface.md ... ok
test run_execution_spec::test-lack-resolver.md ... ok
test run_execution_spec::test-js-request-response-2.md ... ok
test run_execution_spec::test-js-request-response.md ... ok
test run_execution_spec::test-list-args.md ... ok
test run_execution_spec::test-merge-batch.md ... ok
test run_execution_spec::test-merge-nested.md ... ok
test run_execution_spec::test-merge-query.md ... ok
test run_execution_spec::test-merge-right-with-link-config.md ... ok
test run_execution_spec::test-merge-union.md ... ok
test run_execution_spec::test-missing-mutation-resolver.md ... ok
test run_execution_spec::test-merge-server-sdl.md ... ok
test run_execution_spec::test-missing-query-resolver.md ... ok
test run_execution_spec::test-missing-root-types.md ... ok
test run_execution_spec::test-missing-schema-query.md ... ok
test run_execution_spec::test-missing-argument-on-all-resolvers.md ... ok
test run_execution_spec::test-multiple-config-types.md ... ok
test run_execution_spec::test-multiple-resolvable-directives-on-field.md ... ok
test run_execution_spec::test-modify.md ... ok
test run_execution_spec::test-multi-interface.md ... ok
test run_execution_spec::test-nested-input.md ... ok
test run_execution_spec::test-no-base-url.md ... ok
test run_execution_spec::test-nested-link.md ... ok
test run_execution_spec::test-null-in-array.md ... ok
test run_execution_spec::test-nested-value.md ... ok
test run_execution_spec::test-null-in-object.md ... ok
test run_execution_spec::test-omit-list.md ... ok
test run_execution_spec::test-params-as-body.md ... ok
test run_execution_spec::test-omit.md ... ok
test run_execution_spec::test-query.md ... ok
test run_execution_spec::test-query-documentation.md ... ok
test run_execution_spec::test-response-header-value.md ... ok
test run_execution_spec::test-response-headers-multi.md ... ok
test run_execution_spec::test-response-headers-name.md ... ok
test run_execution_spec::test-ref-other.md ... ok
test run_execution_spec::test-response-header-merge.md ... ok
test run_execution_spec::test-scalars-builtin.md ... ok
test run_execution_spec::test-scalars-integers.md ... ok
test run_execution_spec::test-scalars-validation.md ... ok
test run_execution_spec::test-server-base-types.md ... ok
test run_execution_spec::test-set-cookie-headers.md ... ok
test run_execution_spec::test-server-vars.md ... ok
test run_execution_spec::test-static-value.md ... ok
test run_execution_spec::test-undefined-query.md ... ok
test run_execution_spec::test-scalars.md ... ok
test run_execution_spec::test-union-many-types.md ... ok
test run_execution_spec::test-union-same-types.md ... ok
test run_execution_spec::test-union-ambiguous.md ... FAILED
test run_execution_spec::test-tag.md ... ok
test run_execution_spec::test-upstream-headers.md ... ok
test run_execution_spec::undeclared-type-no-base-url.md ... ok
test run_execution_spec::undeclared-type.md ... ok
test run_execution_spec::test-union.md ... FAILED
test run_execution_spec::upstream-batching.md ... ok
test run_execution_spec::test-upstream.md ... ok
test run_execution_spec::upstream-fail-request.md ... ok
test run_execution_spec::with-args-url.md ... ok
test run_execution_spec::with-args.md ... ok
test run_execution_spec::with-nesting.md ... ok
test run_execution_spec::yaml-nested-unions.md ... ok
test run_execution_spec::yaml-union-in-type.md ... ok
test run_execution_spec::yaml-union.md ... ok

failures:

---- run_execution_spec::async-cache-enable-multiple-resolvers.md ----
test panicked: snapshot assertion for 'async-cache-enable-multiple-resolvers.md_0' failed in line 202

---- run_execution_spec::batching.md ----
test panicked: not yet implemented

---- run_execution_spec::call-graphql-datasource.md ----
test panicked: not yet implemented

---- run_execution_spec::call-operator.md ----
test panicked: not yet implemented

---- run_execution_spec::graphql-dataloader-batch-request.md ----
test panicked: not yet implemented

---- run_execution_spec::graphql-dataloader-no-batch-request.md ----
test panicked: not yet implemented

---- run_execution_spec::graphql-datasource-errors.md ----
test panicked: not yet implemented

---- run_execution_spec::graphql-datasource-mutation.md ----
test panicked: not yet implemented

---- run_execution_spec::graphql-datasource-no-args.md ----
test panicked: not yet implemented

---- run_execution_spec::graphql-datasource-query-directives.md ----
test panicked: not yet implemented

---- run_execution_spec::graphql-datasource-with-args.md ----
test panicked: not yet implemented

---- run_execution_spec::graphql-nested-datasource.md ----
test panicked: not yet implemented

---- run_execution_spec::graphql-datasource-with-mandatory-enum.md ----
test panicked: snapshot assertion for 'graphql-datasource-with-mandatory-enum.md_0' failed in line 202

---- run_execution_spec::grpc-oneof.md ----
test panicked: snapshot assertion for 'grpc-oneof.md_0' failed in line 202

---- run_execution_spec::inline-field.md ----
test panicked: snapshot assertion for 'inline-field.md_0' failed in line 202

---- run_execution_spec::js-directive.md ----
test panicked: snapshot assertion for 'js-directive.md_0' failed in line 202

---- run_execution_spec::omit-resolved-by-parent.md ----
test panicked: snapshot assertion for 'omit-resolved-by-parent.md_0' failed in line 202

---- run_execution_spec::recursive-types-json.md ----
test panicked: not yet implemented

---- run_execution_spec::recursive-types.md ----
test panicked: snapshot assertion for 'recursive-types.md_0' failed in line 202

---- run_execution_spec::resolved-by-parent.md ----
test panicked: snapshot assertion for 'resolved-by-parent.md_0' failed in line 202

---- run_execution_spec::test-enum-description.md ----
test panicked: snapshot assertion for 'test-enum-description.md_2' failed in line 202

---- run_execution_spec::test-enum.md ----
test panicked: snapshot assertion for 'test-enum.md_2' failed in line 202

---- run_execution_spec::test-input-out.md ----
test panicked: not yet implemented

---- run_execution_spec::test-input-with-arg-out.md ----
test panicked: not yet implemented

---- run_execution_spec::test-union-ambiguous.md ----
test panicked: snapshot assertion for 'test-union-ambiguous.md_3' failed in line 202

---- run_execution_spec::test-union.md ----
test panicked: snapshot assertion for 'test-union.md_3' failed in line 202

failures:
run_execution_spec::async-cache-enable-multiple-resolvers.md
run_execution_spec::batching.md
run_execution_spec::call-graphql-datasource.md
run_execution_spec::call-operator.md
run_execution_spec::graphql-dataloader-batch-request.md
run_execution_spec::graphql-dataloader-no-batch-request.md
run_execution_spec::graphql-datasource-errors.md
run_execution_spec::graphql-datasource-mutation.md
run_execution_spec::graphql-datasource-no-args.md
run_execution_spec::graphql-datasource-query-directives.md
run_execution_spec::graphql-datasource-with-args.md
run_execution_spec::graphql-nested-datasource.md
run_execution_spec::graphql-datasource-with-mandatory-enum.md
run_execution_spec::grpc-oneof.md
run_execution_spec::inline-field.md
run_execution_spec::js-directive.md
run_execution_spec::omit-resolved-by-parent.md
run_execution_spec::recursive-types-json.md
run_execution_spec::recursive-types.md
run_execution_spec::resolved-by-parent.md
run_execution_spec::test-enum-description.md
run_execution_spec::test-enum.md
run_execution_spec::test-input-out.md
run_execution_spec::test-input-with-arg-out.md
run_execution_spec::test-union-ambiguous.md
run_execution_spec::test-union.md

test result: FAILED. 202 passed; 26 failed; 0 ignored; 0 measured; 0 filtered out; finished in 13.28s

@github-actions
Copy link

Choose a reason for hiding this comment

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

Running 30s test @ http://localhost:8000/graphql

4 threads and 100 connections

Thread Stats Avg Stdev Max +/- Stdev
Latency 7.36ms 3.38ms 150.53ms 72.27%
Req/Sec 3.44k 128.71 3.70k 82.75%

410271 requests in 30.01s, 2.06GB read

Requests/sec: 13672.72

Transfer/sec: 70.18MB

Please sign in to comment.