mirror of
https://github.com/aspnet/JavaScriptServices.git
synced 2025-12-22 17:47:53 +00:00
Fix port testing logic in tests by being explicit about which interface we're checking
This commit is contained in:
@@ -5,6 +5,7 @@ import { waitUntilPortState } from './ports';
|
|||||||
const treeKill = require('tree-kill');
|
const treeKill = require('tree-kill');
|
||||||
const crossSpawn: typeof childProcess.spawn = require('cross-spawn');
|
const crossSpawn: typeof childProcess.spawn = require('cross-spawn');
|
||||||
const defaultPort = 5000;
|
const defaultPort = 5000;
|
||||||
|
const defaultInterface = 'localhost';
|
||||||
|
|
||||||
export const defaultUrl = `http://localhost:${ defaultPort }`;
|
export const defaultUrl = `http://localhost:${ defaultPort }`;
|
||||||
|
|
||||||
@@ -99,7 +100,7 @@ export class AspNetProcess {
|
|||||||
// any outstanding requests. We have to wait for it really to be gone before continuing, otherwise
|
// any outstanding requests. We have to wait for it really to be gone before continuing, otherwise
|
||||||
// the next test might be unable to start because of the port still being in use.
|
// the next test might be unable to start because of the port still being in use.
|
||||||
console.log(`Waiting until port ${ defaultPort } is closed...`);
|
console.log(`Waiting until port ${ defaultPort } is closed...`);
|
||||||
waitUntilPortState(defaultPort, /* isOpen */ true, /* timeoutMs */ 15000, err => {
|
waitUntilPortState(defaultPort, defaultInterface, /* isListening */ false, /* timeoutMs */ 15000, err => {
|
||||||
if (err) {
|
if (err) {
|
||||||
callback(err);
|
callback(err);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,20 +1,21 @@
|
|||||||
import * as portastic from 'portastic';
|
import * as portastic from 'portastic';
|
||||||
const pollInterval = 500;
|
const pollInterval = 500;
|
||||||
|
|
||||||
export function waitUntilPortState(port: number, isOpen: boolean, timeoutMs: number, callback: (err: any) => void) {
|
export function waitUntilPortState(port: number, iface: string, isListening: boolean, timeoutMs: number, callback: (err: any) => void) {
|
||||||
if (!(timeoutMs > 0)) {
|
if (!(timeoutMs > 0)) {
|
||||||
throw new Error(`Timed out after ${ timeoutMs }ms waiting for port ${ port } to become ${ isOpen ? 'free' : 'in use' }`);
|
throw new Error(`Timed out waiting for port ${ port } to become ${ isListening ? 'in use' : 'free' }`);
|
||||||
}
|
}
|
||||||
|
|
||||||
portastic.test(port).then(
|
portastic.test(port, iface).then(
|
||||||
actualIsOpenState => {
|
actuallyIsAvailable => {
|
||||||
if (actualIsOpenState === isOpen) {
|
const actuallyIsListening = !actuallyIsAvailable;
|
||||||
|
if (actuallyIsListening === isListening) {
|
||||||
// Desired state is reached
|
// Desired state is reached
|
||||||
callback(null);
|
callback(null);
|
||||||
} else {
|
} else {
|
||||||
// Wait longer
|
// Wait longer
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
waitUntilPortState(port, isOpen, timeoutMs - pollInterval, callback);
|
waitUntilPortState(port, iface, isListening, timeoutMs - pollInterval, callback);
|
||||||
}, pollInterval);
|
}, pollInterval);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user