apiaryio / dredd

Language-agnostic HTTP API Testing Tool
https://dredd.org
MIT License
4.2k stars 280 forks source link

Dredd slowness (nonlinear) #633

Closed zmorris closed 7 years ago

zmorris commented 8 years ago

Hi I'm using Dredd with PHP hooks. It was running fine with a previous version (unfortunately I don't know which) but since upgrading, it takes over 2 minutes to begin testing. I tried putting an echo "starting"; die; at the top of my Tests/dredd/hooks.php but it doesn't print "starting" until after the delay. dredd --version shows dredd v2.1.0 (Linux 3.19.0-25-generic; x64) and dredd --level=verbose doesn't reveal anything. Node.js is at 6.6.0. top -o %CPU shows the processes pegged at 99%, which drops to 1% or less during testing. So only the loading stage is an issue (although there does seem to be an unrelated delay between tests that I'm not as concerned about).

My blueprint.mp file is 835 kB with 111 endpoints which doesn't seem that large (most of the space goes to json request and response bodies). I decided to time it by cutting lines from the file, here are the results from time I type dredd to when it gets past the loading stage to Beginning Dredd testing...:

percentage kept -> # of endpoints tested -> seconds 25% -> 28 -> 10 33% -> 37 -> 17 50% -> 56 -> 39 100% -> 111 -> 144

This looks suspiciously exponential. If it was linear then 50% would take 20 seconds (not 39), and 100% would take 40 seconds (not 148, which is close to 160). It's most likely slowing by the square of the number of lines loaded.

I'm inside a Vagrant box with nfs disabled because I was having synchronization issues. This makes files run much, much slower than they should. Maybe Dredd is reading the file a line or even a character at a time, and possibly re-reading the whole file up to each endpoint statement. So the exponential slowdown may not have been noticeable with native disk access.

Just wanted to be thorough because testing is accounting for a large portion of my time late in a project. Other than that, Dredd is a great tool and I have no complaints, thanks for your efforts.

UPDATE: I ran dredd natively and the time dropped to 124 seconds so I don't think the issue is due to Vagrant file slowness. Smaller pieces of the file followed a similar curve, just ran a little faster.

UPDATE: I tracked the last fast version down to Dredd 1.0.11, see my comment below for details.

honzajavorek commented 8 years ago

Hi @zmorris, thanks for such elaborate investigation! We're aware of the fact Dredd is slow when booting and wanted to find out why is that. There are actually many factors that can play a significant role in it. As a first step to help with any kind of debugging, I'm preparing a version of Dredd with extensive verbose logging. Currently, as you noticed yourself, it doesn't help much to lower the logging level. So one option is to wait until new release with extended logging is out and see what takes the largest portion of time.

However, at the same time from what you write, it feels like the largest portion of time is taken by parsing your API Blueprint document. It's not very well documented, but we provide two ways to parse API Blueprint - by our C++11 parser and by our JS-only parser. Historically, the C++ parser was the only way to parse the documents, but it caused a lot of troubles when installing Dredd. That's why we provide the JS parser now as a fallback if installation of the C++ one fails. See https://github.com/apiaryio/drafter-npm/ for details.

Unfortunately, Dredd has no diagnostic tools as of now to tell you which parser you are using (see #625). However, it should be visible during the npm install dredd process - if there's failure in protagonist package installation, then you're using the JS parser. Try to make sure to have the C++ parser and compare the times if the C++ version happens to be faster - usually it's enough to install a C++11 compatible gcc (if you're on Windows, then... it can be a different story). To me it seems like natively you have C++11 available thus faster parser is used, but in the virtual box it's not provisioned, not available, so JS parser is used and thus parsing your rather large API Blueprint happens to be very slow. But that's just my theory.

Action points for us

Action points for you

kuba-kubula commented 8 years ago

Note: Speed depends on speed of client request body size and server response body size. The larger the request-bodies and/or response-bodies, the more Gavel must validate.

If the response body is JSON, Dredd also tries to compare objects based on JSON Schema, and/or against the example response (if JSON Schema is not present). And that definitely doesn't have linear complexity based, unless the response is really really similar, or almost the same.

Also to consider - network speed effects, server backend times... Those are too many effects.

Things to consider - look into comparing the real transaction-times of all transactions. And it'll be also great to discount time of "request sent, but still waiting for server response" from the transaction-time.

honzajavorek commented 8 years ago

So only the loading stage is an issue (although there does seem to be an unrelated delay between tests that I'm not as concerned about).

@kuba-kubula Your points would be valid and relevant for the delay between tests, but wouldn't help to inspect the delay on startup. Good points though! I think we could make Dredd to report "real" delays caused by network more transparently so users know e.g. that the underlying server is slow in responding.

zmorris commented 8 years ago

Please excuse my late reply, had to get through the workweek. I reinstalled Dredd again in my Homestead 0.3.3 box (this is a php 5.6.15 box I use for testing since I do my main development on a php 7.0.8 box, but the slowdown shows on both):

$ sudo npm install -g dredd
/usr/bin/dredd -> /usr/lib/node_modules/dredd/bin/dredd

> protagonist@1.5.1 install /usr/lib/node_modules/dredd/node_modules/protagonist
> node-gyp rebuild

gyp WARN EACCES user "root" does not have permission to access the dev dir "/home/vagrant/.node-gyp/5.0.0"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/lib/node_modules/dredd/node_modules/protagonist/.node-gyp"
make: Entering directory `/usr/lib/node_modules/dredd/node_modules/protagonist/build'
  CXX(target) Release/obj.target/libmarkdownparser/drafter/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.o
  CXX(target) Release/obj.target/libmarkdownparser/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.o
  CXX(target) Release/obj.target/libmarkdownparser/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.o
  AR(target) Release/obj.target/drafter/ext/snowcrash/markdownparser.a
  COPY Release/markdownparser.a
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/HTTP.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSON.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONOneOfParser.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONSourcemap.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONTypeSectionParser.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONValueMemberParser.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/Blueprint.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/BlueprintSourcemap.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/Section.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/Signature.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/snowcrash.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/UriTemplateParser.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/HeadersParser.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/posix/RegexMatch.o
  AR(target) Release/obj.target/drafter/ext/snowcrash/snowcrash.a
  COPY Release/snowcrash.a
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_href_e.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_html_e.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html_smartypants.o
  AR(target) Release/obj.target/drafter/ext/snowcrash/sundown.a
  COPY Release/sundown.a
  CXX(target) Release/obj.target/libdrafter/drafter/src/drafter.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/Serialize.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/SerializeAST.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/SerializeSourcemap.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/SerializeResult.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractAPI.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractDataStructure.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractSourceMap.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/Render.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/NamedTypesRegistry.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractElementFactory.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/ConversionContext.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/Element.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/VisitorUtils.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/SerializeCompactVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/SerializeVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/ComparableVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/TypeQueryVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/IsExpandableVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/ExpandVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/RenderJSONVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/PrintVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/JSONSchemaVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/Registry.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/Query.o
  AR(target) Release/obj.target/drafter/drafter.a
  COPY Release/drafter.a
  CXX(target) Release/obj.target/libsos/drafter/ext/sos/src/sos.o
  AR(target) Release/obj.target/drafter/sos.a
  COPY Release/sos.a
  CXX(target) Release/obj.target/protagonist/src/annotation.o
  CXX(target) Release/obj.target/protagonist/src/options_parser.o
  CXX(target) Release/obj.target/protagonist/src/parse_async.o
../src/parse_async.cc: In function ‘void AsyncParseAfter(uv_work_t*)’:
../src/parse_async.cc:133:39: warning: ‘void node::FatalException(const v8::TryCatch&)’ is deprecated (declared at /usr/lib/node_modules/dredd/node_modules/protagonist/.node-gyp/5.0.0/include/node/node.h:282): Use FatalException(isolate, ...) [-Wdeprecated-declarations]
         node::FatalException(try_catch);
                                       ^
  CXX(target) Release/obj.target/protagonist/src/parse_sync.o
  CXX(target) Release/obj.target/protagonist/src/protagonist.o
  CXX(target) Release/obj.target/protagonist/src/result.o
  CXX(target) Release/obj.target/protagonist/src/v8_wrapper.o
  SOLINK_MODULE(target) Release/obj.target/protagonist.node
  COPY Release/protagonist.node
make: Leaving directory `/usr/lib/node_modules/dredd/node_modules/protagonist/build'

> protagonist@1.5.1 install /usr/lib/node_modules/dredd/node_modules/protagonist
> node-gyp rebuild

gyp WARN EACCES user "root" does not have permission to access the dev dir "/home/vagrant/.node-gyp/5.0.0"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/lib/node_modules/dredd/node_modules/protagonist/.node-gyp"
make: Entering directory `/usr/lib/node_modules/dredd/node_modules/protagonist/build'
  CXX(target) Release/obj.target/libmarkdownparser/drafter/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.o
  CXX(target) Release/obj.target/libmarkdownparser/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.o
  CXX(target) Release/obj.target/libmarkdownparser/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.o
  AR(target) Release/obj.target/drafter/ext/snowcrash/markdownparser.a
  COPY Release/markdownparser.a
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/HTTP.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSON.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONOneOfParser.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONSourcemap.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONTypeSectionParser.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONValueMemberParser.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/Blueprint.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/BlueprintSourcemap.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/Section.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/Signature.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/snowcrash.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/UriTemplateParser.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/HeadersParser.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/posix/RegexMatch.o
  AR(target) Release/obj.target/drafter/ext/snowcrash/snowcrash.a
  COPY Release/snowcrash.a
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_href_e.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_html_e.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html_smartypants.o
  AR(target) Release/obj.target/drafter/ext/snowcrash/sundown.a
  COPY Release/sundown.a
  CXX(target) Release/obj.target/libdrafter/drafter/src/drafter.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/Serialize.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/SerializeAST.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/SerializeSourcemap.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/SerializeResult.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractAPI.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractDataStructure.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractSourceMap.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/Render.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/NamedTypesRegistry.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractElementFactory.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/ConversionContext.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/Element.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/VisitorUtils.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/SerializeCompactVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/SerializeVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/ComparableVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/TypeQueryVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/IsExpandableVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/ExpandVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/RenderJSONVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/PrintVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/JSONSchemaVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/Registry.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/Query.o
  AR(target) Release/obj.target/drafter/drafter.a
  COPY Release/drafter.a
  CXX(target) Release/obj.target/libsos/drafter/ext/sos/src/sos.o
  AR(target) Release/obj.target/drafter/sos.a
  COPY Release/sos.a
  CXX(target) Release/obj.target/protagonist/src/annotation.o
  CXX(target) Release/obj.target/protagonist/src/options_parser.o
  CXX(target) Release/obj.target/protagonist/src/parse_async.o
../src/parse_async.cc: In function ‘void AsyncParseAfter(uv_work_t*)’:
../src/parse_async.cc:133:39: warning: ‘void node::FatalException(const v8::TryCatch&)’ is deprecated (declared at /usr/lib/node_modules/dredd/node_modules/protagonist/.node-gyp/5.0.0/include/node/node.h:282): Use FatalException(isolate, ...) [-Wdeprecated-declarations]
         node::FatalException(try_catch);
                                       ^
  CXX(target) Release/obj.target/protagonist/src/parse_sync.o
  CXX(target) Release/obj.target/protagonist/src/protagonist.o
  CXX(target) Release/obj.target/protagonist/src/result.o
  CXX(target) Release/obj.target/protagonist/src/v8_wrapper.o
  SOLINK_MODULE(target) Release/obj.target/protagonist.node
  COPY Release/protagonist.node
make: Leaving directory `/usr/lib/node_modules/dredd/node_modules/protagonist/build'

> dredd@2.1.1 postinstall /usr/lib/node_modules/dredd
> node scripts/print-installation-guidelines.js

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::                                                                ::
::    Install Dredd using npm install dredd@stable in case you    ::
::        prefer stability over new features (e.g. in CI)         ::
::                                                                ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/usr/lib
└─┬ dredd@2.1.1 
  ├─┬ dredd-transactions@3.0.0
  │ └─┬ fury-adapter-apib-parser@0.3.0
  │   └─┬ drafter@1.1.0
  │     ├── drafter.js@2.5.1 
  │     └── protagonist@1.5.1 
  ├─┬ gavel@0.5.4
  │ └── jsonlint@1.6.2  (git://github.com/josdejong/jsonlint.git#85a19d77126771f3177582e3d09c6ffae185d391)
  └── glob@7.1.1 

I don't see an error so it might be using the native parser?

Each request/response uses JSON API so it's a little chatty. Several endpoints respond with up to 10 items having relationships on half a dozen other items, so 5-10 kB each easily.

zmorris commented 8 years ago

Good news! I decided to try a bisect and narrowed down which version became slow. Dredd 1.1.0-pre.2 and above run slowly, while Dredd 1.0.11 and below run quickly. Here are the install logs:

$ sudo npm install -g dredd@1.1.0-pre.2
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
/usr/bin/dredd -> /usr/lib/node_modules/dredd/bin/dredd
- blueprint-transactions@0.0.2 node_modules/dredd/node_modules/blueprint-transactions
- setimmediate@1.0.5 node_modules/dredd/node_modules/setimmediate
/usr/lib
└─┬ dredd@1.1.0-pre.2 
  └─┬ dredd-transactions@0.0.5 
    ├── sift@3.2.6 
    └── traverse@0.6.6 
$ sudo npm install -g dredd@1.0.11
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
/usr/bin/dredd -> /usr/lib/node_modules/dredd/bin/dredd
- call-me-maybe@1.0.1 node_modules/dredd/node_modules/call-me-maybe
- chance@1.0.4 node_modules/dredd/node_modules/chance
- core-js@1.2.7 node_modules/dredd/node_modules/core-js
- babel-runtime@5.8.38 node_modules/dredd/node_modules/babel-runtime
- deckardcain@0.3.2 node_modules/dredd/node_modules/deckardcain
- deep-extend@0.4.1 node_modules/dredd/node_modules/deep-extend
- deref@0.6.4 node_modules/dredd/node_modules/deref
- discontinuous-range@1.0.0 node_modules/dredd/node_modules/discontinuous-range
- drafter.js@2.5.1 node_modules/dredd/node_modules/drafter.js
- drafter@1.1.0 node_modules/dredd/node_modules/drafter
- es6-promise@3.3.1 node_modules/dredd/node_modules/es6-promise
- faker@3.1.0 node_modules/dredd/node_modules/faker
- deckardcain@0.1.6 node_modules/dredd/node_modules/fury-adapter-apib-parser/node_modules/deckardcain
- fury-adapter-apib-parser@0.3.0 node_modules/dredd/node_modules/fury-adapter-apib-parser
- lodash@3.10.1 node_modules/dredd/node_modules/inquirer/node_modules/lodash
- lodash.get@4.4.2 node_modules/dredd/node_modules/lodash.get
- minim-api-description@0.1.8 node_modules/dredd/node_modules/minim-api-description
- minim-parse-result@0.2.2 node_modules/dredd/node_modules/minim-parse-result
- ms@0.7.1 node_modules/dredd/node_modules/ms
- debug@2.2.0 node_modules/dredd/node_modules/debug
- ono@2.2.1 node_modules/dredd/node_modules/ono
- json-schema-ref-parser@1.4.1 node_modules/dredd/node_modules/json-schema-ref-parser
- ret@0.1.12 node_modules/dredd/node_modules/ret
- randexp@0.4.3 node_modules/dredd/node_modules/randexp
- json-schema-faker@0.3.6 node_modules/dredd/node_modules/json-schema-faker
- sift@3.2.6 node_modules/dredd/node_modules/sift
- swagger-methods@1.0.0 node_modules/dredd/node_modules/swagger-methods
- swagger-schema-official@2.0.0-bab6bed node_modules/dredd/node_modules/swagger-schema-official
- traverse@0.6.6 node_modules/dredd/node_modules/traverse
- uptown@0.4.1 node_modules/dredd/node_modules/uptown
- minim@0.14.2 node_modules/dredd/node_modules/minim
- fury@2.2.0 node_modules/dredd/node_modules/fury
- validator@5.7.0 node_modules/dredd/node_modules/validator
- yaml-js@0.1.4 node_modules/dredd/node_modules/yaml-js
- z-schema@3.18.0 node_modules/dredd/node_modules/z-schema
- swagger-parser@3.4.1 node_modules/dredd/node_modules/swagger-parser
- fury-adapter-swagger@0.9.5 node_modules/dredd/node_modules/fury-adapter-swagger
- dredd-transactions@1.6.0 node_modules/dredd/node_modules/dredd-transactions
/usr/lib
└─┬ dredd@1.0.11 
  ├── blueprint-transactions@0.0.2 
  ├─┬ inquirer@0.11.4
  │ └── lodash@3.10.1 
  └── setimmediate@1.0.5 

Luckily Dredd 1.0.11 works for my needs so I'm able to test much more quickly now. Hope this helps someone and thanks for your quick replies on this issue.

honzajavorek commented 8 years ago

Dredd 1.0.11 was a branch off the main development just to backport support for Node 6 to v1.0.x line of development while there were pre-releases for next minor version in master branch. That means in context of this issue, 1.0.11 is probably no different from 1.0.10. Would you be willing to try to find out which version introduces the slowness using following order?

  1. 1.0.11 (we know this version is okay)
  2. v1.1.0-pre.0
  3. v1.1.0-pre.1
  4. v1.1.0-pre.2 (we know this version is slow)

This way we could exactly tell which version causes the problems. Thanks to your investigation we got some more clues, but still there is a gap of two pre releases.

zmorris commented 8 years ago

Ah ok I was going off the releases page and didn't realize there were ones between. Just so everyone knows, I had also tried several higher versions as well as 2+ that ran slowly. Looks like the 1.1.0-pre releases started the issue, here are the results:

  1. 1.0.11 fast
  2. v1.1.0-pre.0 slow
  3. v1.1.0-pre.1 slow
  4. v1.1.0-pre.2 slow

Here are the install logs in case they help (if GitHub has a smaller scroll bar box for text snippets like Slack, please let me know):

$ sudo npm install -g dredd@1.0.11
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
/usr/bin/dredd -> /usr/lib/node_modules/dredd/bin/dredd
/usr/lib
└── dredd@1.0.11 
$ sudo npm install -g dredd@1.1.0-pre.0
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
/usr/bin/dredd -> /usr/lib/node_modules/dredd/bin/dredd

> protagonist@1.3.0 install /usr/lib/node_modules/dredd/node_modules/protagonist
> node-gyp rebuild

gyp WARN EACCES user "root" does not have permission to access the dev dir "/home/vagrant/.node-gyp/5.0.0"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/lib/node_modules/dredd/node_modules/protagonist/.node-gyp"
make: Entering directory `/usr/lib/node_modules/dredd/node_modules/protagonist/build'
  CXX(target) Release/obj.target/libmarkdownparser/drafter/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.o
  CXX(target) Release/obj.target/libmarkdownparser/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.o
  CXX(target) Release/obj.target/libmarkdownparser/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.o
  AR(target) Release/obj.target/drafter/ext/snowcrash/markdownparser.a
  COPY Release/markdownparser.a
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/HTTP.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/HTTP.h:13,
                 from ../drafter/ext/snowcrash/src/HTTP.cc:9:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSON.o
In file included from ../drafter/ext/snowcrash/src/MSON.cc:9:0:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONOneOfParser.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/ext/snowcrash/src/ModelTable.h:21,
                 from ../drafter/ext/snowcrash/src/SectionParserData.h:12,
                 from ../drafter/ext/snowcrash/src/SectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SignatureSectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SectionParser.h:13,
                 from ../drafter/ext/snowcrash/src/MSONMixinParser.h:12,
                 from ../drafter/ext/snowcrash/src/MSONOneOfParser.h:12,
                 from ../drafter/ext/snowcrash/src/MSONOneOfParser.cc:9:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/ext/snowcrash/src/ModelTable.h:21,
                 from ../drafter/ext/snowcrash/src/SectionParserData.h:12,
                 from ../drafter/ext/snowcrash/src/SectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SignatureSectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SectionParser.h:13,
                 from ../drafter/ext/snowcrash/src/MSONMixinParser.h:12,
                 from ../drafter/ext/snowcrash/src/MSONOneOfParser.h:12,
                 from ../drafter/ext/snowcrash/src/MSONOneOfParser.cc:9:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONSourcemap.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/MSONSourcemap.h:12,
                 from ../drafter/ext/snowcrash/src/MSONSourcemap.cc:9:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/MSONSourcemap.cc:9:0:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONTypeSectionParser.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/ext/snowcrash/src/ModelTable.h:21,
                 from ../drafter/ext/snowcrash/src/SectionParserData.h:12,
                 from ../drafter/ext/snowcrash/src/SectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SignatureSectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SectionParser.h:13,
                 from ../drafter/ext/snowcrash/src/MSONMixinParser.h:12,
                 from ../drafter/ext/snowcrash/src/MSONOneOfParser.h:12,
                 from ../drafter/ext/snowcrash/src/MSONTypeSectionParser.cc:9:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/ext/snowcrash/src/ModelTable.h:21,
                 from ../drafter/ext/snowcrash/src/SectionParserData.h:12,
                 from ../drafter/ext/snowcrash/src/SectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SignatureSectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SectionParser.h:13,
                 from ../drafter/ext/snowcrash/src/MSONMixinParser.h:12,
                 from ../drafter/ext/snowcrash/src/MSONOneOfParser.h:12,
                 from ../drafter/ext/snowcrash/src/MSONTypeSectionParser.cc:9:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONValueMemberParser.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/ext/snowcrash/src/ModelTable.h:21,
                 from ../drafter/ext/snowcrash/src/SectionParserData.h:12,
                 from ../drafter/ext/snowcrash/src/SectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SignatureSectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SectionParser.h:13,
                 from ../drafter/ext/snowcrash/src/MSONMixinParser.h:12,
                 from ../drafter/ext/snowcrash/src/MSONOneOfParser.h:12,
                 from ../drafter/ext/snowcrash/src/MSONValueMemberParser.cc:9:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/ext/snowcrash/src/ModelTable.h:21,
                 from ../drafter/ext/snowcrash/src/SectionParserData.h:12,
                 from ../drafter/ext/snowcrash/src/SectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SignatureSectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SectionParser.h:13,
                 from ../drafter/ext/snowcrash/src/MSONMixinParser.h:12,
                 from ../drafter/ext/snowcrash/src/MSONOneOfParser.h:12,
                 from ../drafter/ext/snowcrash/src/MSONValueMemberParser.cc:9:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/Blueprint.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/Blueprint.cc:9:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/BlueprintSourcemap.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.cc:9:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.cc:9:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/Section.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/Signature.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/ext/snowcrash/src/ModelTable.h:21,
                 from ../drafter/ext/snowcrash/src/SectionParserData.h:12,
                 from ../drafter/ext/snowcrash/src/SectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SignatureSectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SectionParser.h:13,
                 from ../drafter/ext/snowcrash/src/Signature.cc:10:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/ext/snowcrash/src/ModelTable.h:21,
                 from ../drafter/ext/snowcrash/src/SectionParserData.h:12,
                 from ../drafter/ext/snowcrash/src/SectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SignatureSectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SectionParser.h:13,
                 from ../drafter/ext/snowcrash/src/Signature.cc:10:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/snowcrash.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/ext/snowcrash/src/snowcrash.h:12,
                 from ../drafter/ext/snowcrash/src/snowcrash.cc:9:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/ext/snowcrash/src/snowcrash.h:12,
                 from ../drafter/ext/snowcrash/src/snowcrash.cc:9:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/UriTemplateParser.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/UriTemplateParser.h:12,
                 from ../drafter/ext/snowcrash/src/UriTemplateParser.cc:9:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/HeadersParser.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/ext/snowcrash/src/ModelTable.h:21,
                 from ../drafter/ext/snowcrash/src/SectionParserData.h:12,
                 from ../drafter/ext/snowcrash/src/SectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SignatureSectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SectionParser.h:13,
                 from ../drafter/ext/snowcrash/src/HeadersParser.h:12,
                 from ../drafter/ext/snowcrash/src/HeadersParser.cc:1:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/ext/snowcrash/src/ModelTable.h:21,
                 from ../drafter/ext/snowcrash/src/SectionParserData.h:12,
                 from ../drafter/ext/snowcrash/src/SectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SignatureSectionProcessor.h:12,
                 from ../drafter/ext/snowcrash/src/SectionParser.h:13,
                 from ../drafter/ext/snowcrash/src/HeadersParser.h:12,
                 from ../drafter/ext/snowcrash/src/HeadersParser.cc:1:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/posix/RegexMatch.o
  AR(target) Release/obj.target/drafter/ext/snowcrash/snowcrash.a
  COPY Release/snowcrash.a
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_href_e.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_html_e.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html_smartypants.o
  AR(target) Release/obj.target/drafter/ext/snowcrash/sundown.a
  COPY Release/sundown.a
  CXX(target) Release/obj.target/libdrafter/drafter/src/drafter.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/ext/snowcrash/src/snowcrash.h:12,
                 from ../drafter/src/drafter.h:12,
                 from ../drafter/src/drafter.cc:9:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/ext/snowcrash/src/snowcrash.h:12,
                 from ../drafter/src/drafter.h:12,
                 from ../drafter/src/drafter.cc:9:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libdrafter/drafter/src/cdrafter.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/ext/snowcrash/src/snowcrash.h:12,
                 from ../drafter/src/cdrafter.cc:13:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/ext/snowcrash/src/snowcrash.h:12,
                 from ../drafter/src/cdrafter.cc:13:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libdrafter/drafter/src/Serialize.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/Serialize.cc:9:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/Serialize.cc:9:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libdrafter/drafter/src/SerializeAST.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/SerializeAST.h:12,
                 from ../drafter/src/SerializeAST.cc:10:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/SerializeAST.h:12,
                 from ../drafter/src/SerializeAST.cc:10:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libdrafter/drafter/src/SerializeSourcemap.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/SerializeSourcemap.h:12,
                 from ../drafter/src/SerializeSourcemap.cc:9:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/SerializeSourcemap.h:12,
                 from ../drafter/src/SerializeSourcemap.cc:9:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libdrafter/drafter/src/SerializeResult.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/RefractAPI.h:12,
                 from ../drafter/src/SerializeResult.cc:9:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/RefractAPI.h:12,
                 from ../drafter/src/SerializeResult.cc:9:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractAPI.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/RefractDataStructure.h:12,
                 from ../drafter/src/RefractAPI.cc:11:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/RefractDataStructure.h:12,
                 from ../drafter/src/RefractAPI.cc:11:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractDataStructure.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/RefractDataStructure.h:12,
                 from ../drafter/src/RefractDataStructure.cc:10:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/RefractDataStructure.h:12,
                 from ../drafter/src/RefractDataStructure.cc:10:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractSourceMap.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/RefractSourceMap.h:12,
                 from ../drafter/src/RefractSourceMap.cc:1:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/RefractSourceMap.h:12,
                 from ../drafter/src/RefractSourceMap.cc:1:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libdrafter/drafter/src/Render.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/Render.h:12,
                 from ../drafter/src/Render.cc:9:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/Render.h:12,
                 from ../drafter/src/Render.cc:9:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libdrafter/drafter/src/NamedTypesRegistry.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/src/NamedTypesRegistry.h:12,
                 from ../drafter/src/NamedTypesRegistry.cc:1:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/NodeInfo.h:12,
                 from ../drafter/src/NamedTypesRegistry.cc:10:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractElementFactory.o
In file included from ../drafter/src/RefractElementFactory.h:13:0,
                 from ../drafter/src/RefractElementFactory.cc:1:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/Serialize.h:15,
                 from ../drafter/src/RefractElementFactory.cc:4:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/Element.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/VisitorUtils.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/SerializeCompactVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/SerializeVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/ComparableVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/TypeQueryVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/IsExpandableVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/ExpandVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/RenderJSONVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/PrintVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/JSONSchemaVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/ApplyVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/Registry.o
  AR(target) Release/obj.target/drafter/drafter.a
  COPY Release/drafter.a
  CXX(target) Release/obj.target/libsos/drafter/ext/sos/src/sos.o
  AR(target) Release/obj.target/drafter/sos.a
  COPY Release/sos.a
  CXX(target) Release/obj.target/protagonist/src/annotation.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/src/Serialize.h:15,
                 from ../src/protagonist.h:7,
                 from ../src/annotation.cc:1:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/Serialize.h:15,
                 from ../src/protagonist.h:7,
                 from ../src/annotation.cc:1:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/protagonist/src/options_parser.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/src/Serialize.h:15,
                 from ../src/protagonist.h:7,
                 from ../src/options_parser.cc:1:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/Serialize.h:15,
                 from ../src/protagonist.h:7,
                 from ../src/options_parser.cc:1:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/protagonist/src/parse_async.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/src/Serialize.h:15,
                 from ../src/protagonist.h:7,
                 from ../src/parse_async.cc:3:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/Serialize.h:15,
                 from ../src/protagonist.h:7,
                 from ../src/parse_async.cc:3:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
../src/parse_async.cc: In function ‘void AsyncParseAfter(uv_work_t*)’:
../src/parse_async.cc:134:39: warning: ‘void node::FatalException(const v8::TryCatch&)’ is deprecated (declared at /usr/lib/node_modules/dredd/node_modules/protagonist/.node-gyp/5.0.0/include/node/node.h:282): Use FatalException(isolate, ...) [-Wdeprecated-declarations]
         node::FatalException(try_catch);
                                       ^
  CXX(target) Release/obj.target/protagonist/src/parse_sync.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/src/Serialize.h:15,
                 from ../src/protagonist.h:7,
                 from ../src/parse_sync.cc:3:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/Serialize.h:15,
                 from ../src/protagonist.h:7,
                 from ../src/parse_sync.cc:3:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/protagonist/src/protagonist.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/src/Serialize.h:15,
                 from ../src/protagonist.h:7,
                 from ../src/protagonist.cc:1:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/Serialize.h:15,
                 from ../src/protagonist.h:7,
                 from ../src/protagonist.cc:1:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/protagonist/src/result.o
In file included from ../drafter/ext/snowcrash/src/Blueprint.h:17:0,
                 from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:12,
                 from ../drafter/src/Serialize.h:15,
                 from ../src/protagonist.h:7,
                 from ../src/result.cc:1:
../drafter/ext/snowcrash/src/MSON.h:372:37: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
             std::auto_ptr<Elements> m_elements;
                                     ^
In file included from ../drafter/ext/snowcrash/src/BlueprintSourcemap.h:13:0,
                 from ../drafter/src/Serialize.h:15,
                 from ../src/protagonist.h:7,
                 from ../src/result.cc:1:
../drafter/ext/snowcrash/src/MSONSourcemap.h:177:51: warning: ‘auto_ptr’ is deprecated (declared at /usr/include/c++/4.8/backward/auto_ptr.h:87) [-Wdeprecated-declarations]
         std::auto_ptr<SourceMap<mson::Elements> > m_elements;
                                                   ^
  CXX(target) Release/obj.target/protagonist/src/v8_wrapper.o
  SOLINK_MODULE(target) Release/obj.target/protagonist.node
  COPY Release/protagonist.node
make: Leaving directory `/usr/lib/node_modules/dredd/node_modules/protagonist/build'
- blueprint-transactions@0.0.2 node_modules/dredd/node_modules/blueprint-transactions
- setimmediate@1.0.5 node_modules/dredd/node_modules/setimmediate
/usr/lib
└─┬ dredd@1.1.0-pre.0 
  └─┬ dredd-transactions@0.0.3 
    ├─┬ protagonist@1.3.0 
    │ └── nan@2.0.9 
    ├── sift@3.2.6 
    └── traverse@0.6.6 
$ sudo npm install -g dredd@1.1.0-pre.1
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
/usr/bin/dredd -> /usr/lib/node_modules/dredd/bin/dredd

> protagonist@1.5.1 install /usr/lib/node_modules/dredd/node_modules/protagonist
> node-gyp rebuild

gyp WARN EACCES user "root" does not have permission to access the dev dir "/home/vagrant/.node-gyp/5.0.0"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/lib/node_modules/dredd/node_modules/protagonist/.node-gyp"
make: Entering directory `/usr/lib/node_modules/dredd/node_modules/protagonist/build'
  CXX(target) Release/obj.target/libmarkdownparser/drafter/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.o
  CXX(target) Release/obj.target/libmarkdownparser/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.o
  CXX(target) Release/obj.target/libmarkdownparser/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.o
  AR(target) Release/obj.target/drafter/ext/snowcrash/markdownparser.a
  COPY Release/markdownparser.a
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/HTTP.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSON.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONOneOfParser.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONSourcemap.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONTypeSectionParser.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/MSONValueMemberParser.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/Blueprint.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/BlueprintSourcemap.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/Section.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/Signature.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/snowcrash.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/UriTemplateParser.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/HeadersParser.o
  CXX(target) Release/obj.target/libsnowcrash/drafter/ext/snowcrash/src/posix/RegexMatch.o
  AR(target) Release/obj.target/drafter/ext/snowcrash/snowcrash.a
  COPY Release/snowcrash.a
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_href_e.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_html_e.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.o
  CC(target) Release/obj.target/libsundown/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html_smartypants.o
  AR(target) Release/obj.target/drafter/ext/snowcrash/sundown.a
  COPY Release/sundown.a
  CXX(target) Release/obj.target/libdrafter/drafter/src/drafter.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/Serialize.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/SerializeAST.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/SerializeSourcemap.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/SerializeResult.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractAPI.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractDataStructure.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractSourceMap.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/Render.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/NamedTypesRegistry.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/RefractElementFactory.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/ConversionContext.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/Element.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/VisitorUtils.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/SerializeCompactVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/SerializeVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/ComparableVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/TypeQueryVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/IsExpandableVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/ExpandVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/RenderJSONVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/PrintVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/JSONSchemaVisitor.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/Registry.o
  CXX(target) Release/obj.target/libdrafter/drafter/src/refract/Query.o
  AR(target) Release/obj.target/drafter/drafter.a
  COPY Release/drafter.a
  CXX(target) Release/obj.target/libsos/drafter/ext/sos/src/sos.o
  AR(target) Release/obj.target/drafter/sos.a
  COPY Release/sos.a
  CXX(target) Release/obj.target/protagonist/src/annotation.o
  CXX(target) Release/obj.target/protagonist/src/options_parser.o
  CXX(target) Release/obj.target/protagonist/src/parse_async.o
../src/parse_async.cc: In function ‘void AsyncParseAfter(uv_work_t*)’:
../src/parse_async.cc:133:39: warning: ‘void node::FatalException(const v8::TryCatch&)’ is deprecated (declared at /usr/lib/node_modules/dredd/node_modules/protagonist/.node-gyp/5.0.0/include/node/node.h:282): Use FatalException(isolate, ...) [-Wdeprecated-declarations]
         node::FatalException(try_catch);
                                       ^
  CXX(target) Release/obj.target/protagonist/src/parse_sync.o
  CXX(target) Release/obj.target/protagonist/src/protagonist.o
  CXX(target) Release/obj.target/protagonist/src/result.o
  CXX(target) Release/obj.target/protagonist/src/v8_wrapper.o
  SOLINK_MODULE(target) Release/obj.target/protagonist.node
  COPY Release/protagonist.node
make: Leaving directory `/usr/lib/node_modules/dredd/node_modules/protagonist/build'
/usr/lib
└─┬ dredd@1.1.0-pre.1 
  └─┬ dredd-transactions@0.0.4 
    └─┬ protagonist@1.5.1 
      └── nan@2.2.1 
$ sudo npm install -g dredd@1.1.0-pre.2
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
/usr/bin/dredd -> /usr/lib/node_modules/dredd/bin/dredd
/usr/lib
└─┬ dredd@1.1.0-pre.2 
  └── dredd-transactions@0.0.5 
honzajavorek commented 8 years ago

Thanks! This clearly indicates that Dredd became slow with the same blueprint after https://github.com/apiaryio/dredd/pull/445, i.e. after it switched to API Elements to support both API Blueprint and Swagger. You seem to have C++ parser (protagonist) installed correctly.

If I checked the commits correctly, both 1.0.11 and v1.1.0-pre.0 Dredd versions use protagonist 1.3.0, so the slowdown shouldn't be a drafter issue.

So it seems compilation of transactions from API Elements in the dredd-transactions library got slow. I filed a related issue here: https://github.com/apiaryio/dredd-transactions/issues/66


@zmorris Thanks very much for all this! Speed of Dredd is important and I think we should really pay some attention to it.

o5 commented 7 years ago

Hello @honzajavorek,

I would like to discover slowness of Dredd testing in our CI pipeline. We are using dockerized version (apiaryio/dredd:2.2.5) but I think there is JS parser used. Or not?

There is a response from Dredd:

$ dredd /blueprint.apib http://api --hookfiles /hook.js

// there is about 40sec sleep

info: Beginning Dredd testing...
info: Found Hookfiles: 0=/hook.js
pass: PUT /v1/users/4 duration: 41ms
pass: PUT /v1/users/4 duration: 38ms
....

complete: 76 passing, 0 failing, 0 errors, 0 skipped, 76 total
complete: Tests took 11124ms

Thank you!

honzajavorek commented 7 years ago

@o5 Hello! The slowness is probably caused by this issue: https://github.com/apiaryio/dredd-transactions/issues/66 You can try C++ versus JS versions, but I think the main problem is in processing the parse result in Dredd Transactions.

honzajavorek commented 7 years ago

I believe this has been fixed by recent upgrades of Dredd Transactions. Thank you all! Let me know if you experience improvements 🚀