Files
DefinitelyTyped/types/hystrixjs/hystrixjs-tests.ts
rcannon 01d17fcb39 [hystrixjs] Strengthen type hints
This adds type hints for builders, commands and their respective
callbacks functions out to seven arity, while leaving the nonspecific
versions for backwards compatibility. This allows
`commandFactory.getOrCreate()` to create fully type hinted callback
signatures, both for the builder and the command.

```js
const command = commandFactory.
  getOrCreate<ResponseType, Arg1Type, Arg2Type>();
```

I also replaced all references to `Q` with `PromiseLike`, and added the
missing `hystrix.promise.implementation` configuration option, which
allows changing the underlying promise implementation.

This allows things like:

```js
const Bluebird = require("bluebird");
HystrixConfig.init({
  "hystrix.promise.implementation": Bluebird
});
(command.execute() as Bluebird<any>).catch(() => true);
```

...although I couldn't figure out how to more elegantly express that
Bluebird type.

Also made the fallback signature match the implementation.
2017-11-10 23:29:21 -08:00

84 lines
2.7 KiB
TypeScript

import hystrixjs = require('hystrixjs');
import q = require('q');
var commandFactory = hystrixjs.commandFactory;
var command = commandFactory
.getOrCreate<string, string>('testCommand', 'testGroup')
.circuitBreakerSleepWindowInMilliseconds(5000)
.errorHandler((error) => {
return false;
})
.timeout(3000)
.circuitBreakerRequestVolumeThreshold(10)
.requestVolumeRejectionThreshold(10)
.circuitBreakerForceOpened(true)
.circuitBreakerForceClosed(false)
.statisticalWindowNumberOfBuckets(10)
.statisticalWindowLength(10)
.percentileWindowNumberOfBuckets(10)
.percentileWindowLength(60)
.circuitBreakerErrorThresholdPercentage(30)
.fallbackTo((error) => {
return q.resolve('fallback');
})
.run((args) => {
return q.resolve(args);
})
.build();
command.execute('something').then((result) => {
console.log(result);
})
commandFactory.resetCache();
var metricsFactory = hystrixjs.metricsFactory;
var metrics = metricsFactory.getOrCreate({
commandKey: 'metricsKey',
commandGroup: 'metricsGroup'
})
metrics.markSuccess();
metrics.markFailure();
metrics.markRejected();
metrics.markTimeout();
metrics.incrementExecutionCount();
metrics.decrementExecutionCount();
metrics.getCurrentExecutionCount();
metrics.addExecutionTime(3000);
metrics.getRollingCount("FAILURE");
var healthcounts = metrics.getHealthCounts();
console.log(healthcounts.totalCount);
console.log(healthcounts.errorCount);
console.log(healthcounts.errorPercentage);
metricsFactory.resetCache();
metricsFactory.getAllMetrics().map((metrics) => {
console.log(metrics.getCurrentExecutionCount());
});
var hystrixConfig = hystrixjs.hystrixConfig;
console.log(hystrixConfig.metricsPercentileWindowBuckets());
console.log(hystrixConfig.circuitBreakerForceClosed());
console.log(hystrixConfig.circuitBreakerForceOpened());
console.log(hystrixConfig.circuitBreakerSleepWindowInMilliseconds());
console.log(hystrixConfig.circuitBreakerErrorThresholdPercentage());
console.log(hystrixConfig.circuitBreakerRequestVolumeThreshold());
console.log(hystrixConfig.circuitBreakerRequestVolumeThresholdForceOverride());
console.log(hystrixConfig.circuitBreakerRequestVolumeThresholdOverride());
console.log(hystrixConfig.executionTimeoutInMilliseconds());
console.log(hystrixConfig.metricsStatisticalWindowBuckets());
console.log(hystrixConfig.metricsStatisticalWindowInMilliseconds());
console.log(hystrixConfig.metricsPercentileWindowInMilliseconds());
console.log(hystrixConfig.requestVolumeRejectionThreshold());
console.log(hystrixConfig.resetProperties());
console.log(hystrixConfig.init({}));
var hystrixSSEStream = hystrixjs.hystrixSSEStream;
hystrixSSEStream.toObservable().subscribe((result) => {
console.log(result);
})