'use strict';

const {
  hasCrypto,
  mustCall,
  skip
} = require('../common');
if (!hasCrypto)
  skip('missing crypto');

const {
  strictEqual
} = require('assert');
const {
  createServer,
  connect
} = require('http2');
const {
  spawnSync
} = require('child_process');

// Validate that there is no unexpected output when
// using http2
if (process.argv[2] !== 'child') {
  const {
    stdout, stderr, status
  } = spawnSync(process.execPath, [__filename, 'child'], { encoding: 'utf8' });
  strictEqual(stderr, '');
  strictEqual(stdout, '');
  strictEqual(status, 0);
} else {
  const server = createServer();
  server.listen(0, mustCall(() => {
    const client = connect(`http://localhost:${server.address().port}`);
    client.on('connect', mustCall(() => {
      client.close();
      server.close();
    }));
  }));
}