This repository has been archived by the owner on Feb 4, 2022. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(compression): implement wire protocol compression support
NODE-1016, NODE-1027 * core work for getting compression message to travel * Inital compression message test with mock server * Renaming test * typo in runner.js * only emit fullsetup event once * Extending tests * Can decompress snappy messages * Adding zlib support * Reducing console logging verbosity * Debugging mock * Fixing mock to be able to send OP_COMPRESSED * Added mock tests for various OP_COMPRESSED reception cases * Edit no compression test to include doc insertion * Compression tests attempt inserting * Commenting out unneeded test * Added test to check for invalid compressor args * Allowing sending of outbound OP_COMPRESSED * Don't compress uncompressible messages * Removing changes to server_tests.js * Refactoring * Increasing test verbosity * (WIP) receiving compressed messages in the mock * (WIP) convering compressed mock msgs to original messages * Mock server can receive compressed messages * CRUD tests for mock server w/ compression * Mock test bug fixes * Added tests to mock to compress commands * Testing that uncompressible commands aren't compressed * Note in responses whether the message was originally compressed * Starting integration testing * Adding Wire Protocol Version detection to tests * Renaming test * Some auth tests in server_tests * Removed erroneous test statements * refactor(test-runner): don't check mongodb version if skip specified * Use actual server type in standalone SDAM events: Currently the server type inside the topologyDescriptionChanged event for a single topology is 'Standalone', which is unexpected. According to the SDAM specification a TopologyDescription has a list of ServerDescriptions, which had a type field indicating the type of server it is and does not state that the server type never changes if the topology is single. My expectation is that a single connection to a replica set primary, for example, would give me a topology type of 'Single' and a server type of 'RSPrimary', not 'Standalone' like it currently does. The serverDescriptionChanged event properly has the type set. * test(sdam): add test for emitting correct SDAM server type * Allow running tests with a particular version of mongod using the -v flag * Tidying comments * Create facility to spawn new mongod with options * Create compression test * Tidying snappy compression test implementation * Removing unneeded import * Tidying tests * Switch to using deflate/inflate instead of zip/unzip * Implementing async compression of outbound OP_COMPRESSED * Changing clashing port number * Using strict mode * Switching to use forEach * Tidying requires() * Removing version flag Use environment variable instead * Tidying up * Fixing typo * [NODE-1021] [NODE-1023] OP_COMPRESSED reception support and mock testing * core work for getting compression message to travel * Inital compression message test with mock server * Renaming test * typo in runner.js * Extending tests * Can decompress snappy messages * Adding zlib support * Reducing console logging verbosity * Debugging mock * Fixing mock to be able to send OP_COMPRESSED * Added mock tests for various OP_COMPRESSED reception cases * Edit no compression test to include doc insertion * Compression tests attempt inserting * Commenting out unneeded test * Added test to check for invalid compressor args * Add snappy to package.json * Removing use of "in" and debugging statements * Changing magic number for a constant * Remove extraneous console log * Fixing typo * Refactoring and bailing early * Fixing typo * chore(travis): only run CI for node LTS versions 4 & 6 * chore(travis): use containerized trusty builds * Changing OP_COMMAND to OP_COMPRESSED * Small refactor for reading a header * (WIP) refactoring decompression to be async * WIP Async decompression * Tweaking test to use config port * WIP Making decompression async * Validate compressorId * Async decompression now working * Updating tests (copying in from NODE-1027) * Adding strict mode So we can use "let", etc… on older versions of Node * Moving snappy to devDependencies * Simplifying code * Reducing reliance on constants * Fixing mis-named variable * Removing unneeded and unused function * Defining OP_COMMAND constant once * Improving code readability * Making snappy optional * Require_Optional Snappy * Making decompression code clearer * Making error message more informative * Removing debug message * Reordering function arguments so that "self" is first * Removing incorrect environment This environment has not yet been created in this branch * Using constants to decide compression mechanism * Removing unused code * Using !== instead of != * Using pre-release require_master * Tidying up * Tidying use of constants * Standardising use of compressorID and simplifying deciding which ID to use * Tidying up * Removing unneeded requires * Updating Travis Node version, require_optional version, and creating package_lock * Tidying Response creation * Removing MongoDB 2.4.x from Travis * Moving OPCODE numbers to wireprotocol/shared.js * core work for getting compression message to travel * Inital compression message test with mock server * Extending tests * Can decompress snappy messages * Adding zlib support * Reducing console logging verbosity * Debugging mock * Fixing mock to be able to send OP_COMPRESSED * Added mock tests for various OP_COMPRESSED reception cases * Compression tests attempt inserting * Commenting out unneeded test * Allowing sending of outbound OP_COMPRESSED * Don't compress uncompressible messages * Removing changes to server_tests.js * Refactoring * (WIP) receiving compressed messages in the mock * (WIP) convering compressed mock msgs to original messages * Mock server can receive compressed messages * CRUD tests for mock server w/ compression * Mock test bug fixes * Added tests to mock to compress commands * Starting integration testing * Adding Wire Protocol Version detection to tests * Renaming test * Some auth tests in server_tests * Removed erroneous test statements * Allow running tests with a particular version of mongod using the -v flag * Tidying comments * Create facility to spawn new mongod with options * Create compression test * Tidying snappy compression test implementation * Tidying tests * Switch to using deflate/inflate instead of zip/unzip * Implementing async compression of outbound OP_COMPRESSED * Switching to use forEach * Removing version flag Use environment variable instead * Tidying up * Post-rebase tidying * Tidying code * Melding branches together * Fixing comment * Adding test topologies * Improving how zlib compression level is set There is no need to tell zlib to use the default compression level. * Fixing compatibility with Node v4 Node v4 seems to have difficulty supporting Buffer.fill(someBuffer). * Moving parseHeader * Moving compressorIDs * Moving uncompressibleCommands * Moving compress and decompress * Moving operation construction out of promise * Removing use of promises in command serialization * Fixing typo * Refactoring hasUncompressibleCommands
- Loading branch information