UNPKG

keep-observers

Version:

This is a monitoring service applied to the web side Support Elasticsearch+kiban The middleware extension interface is provided by means of plug-in service compositionkeep-observers

365 lines (345 loc) 19.6 kB
import KeepObserver from '../../@core/instance' import KeepObserverNetwork from '../../@core/monitor/network' import { KeepObserverPublic,KeepObserverMiddleWare } from '@util/index' import { consoleTools } from '@util/index' import axios from 'axios' const testRequest = 'http://localhost:9003/report?time=2000' const testTimeout = 'http://localhost:9003/timeout' const test404 = 'http://localhost:9003/404' const test500 = 'http://localhost:9003/500' const put = 'http://localhost:9003/putTest' const deleteURL = 'http://localhost:9003/deleteTest' describe("KeepObserverNetwork service",function(){ //init service var testInstance = null var network = null beforeEach(function () { //config jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000 //init service KeepObserverMiddleWare.publicMiddles = {} KeepObserverPublic.extendReportParams = {} testInstance = new KeepObserver({ runMiddleTimeOut: 3000, isCheckRepeatUse:false, projectName: 'test', projectVersion: 'test-version' }) network = new KeepObserverNetwork() network.startObserver() }) it('KeepObserverNetwork api',function(){ spyOn(network,'stopObserver').and.callThrough(); spyOn(network,'startObserver').and.callThrough(); spyOn(network,'cancelPatch').and.callThrough(); testInstance.use(network) testInstance.apis('networkStart') testInstance.apis('networkStop') testInstance.apis('networkCancelPatch') expect(network.startObserver).toHaveBeenCalled() expect(network.stopObserver).toHaveBeenCalled() expect(network.cancelPatch).toHaveBeenCalled() }) it('KeepObserverNetwork ajax catch',function(done){ console.log('start KeepObserverNetwork ajax catch') var receiveCount = 0; class ConsumerService{ getMessage(message){ expect(message.type).toBe(`monitor`) expect(message.typeName).toBe(`network`) expect(message.testAdd).toBe(1) expect(message.data.type).toBe('ajax') switch(++receiveCount){ case 1: expect(message.data.status).toBe(0) expect(message.data.method).toBe("POST") expect(message.data.params).toEqual({time:'2000'}) expect(message.data.statusType).toBe("request") expect(message.data.url).toBe("http://localhost:9003/report") expect(message.data.body).toBe('{"test":111,"params":{"type":"post"}}') return case 2: expect(message.data.status).toBe(200) expect(message.data.method).toBe("POST") expect(message.data.params).toEqual({time:'2000'}) expect(message.data.statusType).toBe("response") expect(message.data.costTime).toBeGreaterThan(1) expect(message.data.url).toBe("http://localhost:9003/report") expect(message.data.body).toBe('{"test":111,"params":{"type":"post"}}') expect(message.data.response).toBe('{"code":2000,"data":{"test":111}}') return case 3: expect(message.data.method).toBe("GET") expect(message.data.status).toBe(0) expect(message.data.params).toBe('') expect(message.data.statusType).toBe("request") expect(message.data.url).toBe("http://localhost:9003/404") expect(message.data.body).toBe('') return case 4: expect(message.data.status).toBe(404) expect(message.data.method).toBe("GET") expect(message.data.params).toBe('') expect(message.data.statusType).toBe("response") expect(message.data.url).toBe("http://localhost:9003/404") expect(message.data.body).toBe('') expect(message.data.isError).toBeTrue() expect(message.data.response).toBe('ajax request error! error statusCode:404') return case 5: expect(message.data.method).toBe("GET") expect(message.data.status).toBe(0) expect(message.data.params).toBe('') expect(message.data.statusType).toBe("request") expect(message.data.url).toBe("http://localhost:9003/500") expect(message.data.body).toBe('') return case 6: expect(message.data.status).toBe(500) expect(message.data.method).toBe("GET") expect(message.data.params).toBe('') expect(message.data.statusType).toBe("response") expect(message.data.url).toBe("http://localhost:9003/500") expect(message.data.isError).toBeTrue() expect(message.data.body).toBe('') expect(message.data.response).toBe('ajax request error! error statusCode:500') return case 7: expect(message.data.method).toBe("GET") expect(message.data.status).toBe(0) expect(message.data.params).toBe('') expect(message.data.statusType).toBe("request") expect(message.data.url).toBe("http://localhost:9003/timeout") expect(message.data.body).toBe('') return case 8: expect(message.data.status).toBe(0) expect(message.data.method).toBe("GET") expect(message.data.params).toBe('') expect(message.data.statusType).toBe("response") expect(message.data.url).toBe("http://localhost:9003/timeout") expect(message.data.body).toBe('') expect(message.data.isError).toBeTrue() expect(message.data.timeout).toBe(20000) //default timeout 20000 ms expect(message.data.response).toBe('ajax request timeout,time:20000(ms)') expect(message.data.errorContent).toBe('ajax request timeout,time:20000(ms)') return //add method case 9: expect(message.data.status).toBe(0) expect(message.data.method).toBe("PUT") expect(message.data.params).toEqual('') expect(message.data.statusType).toBe("request") expect(message.data.url).toBe("http://localhost:9003/putTest") expect(message.data.body).toBe('{"test":111,"params":{"type":"put"}}') return case 10: expect(message.data.status).toBe(200) expect(message.data.method).toBe("PUT") expect(message.data.params).toEqual('') expect(message.data.statusType).toBe("response") expect(message.data.costTime).toBeGreaterThan(1) expect(message.data.url).toBe("http://localhost:9003/putTest") expect(message.data.body).toBe('{"test":111,"params":{"type":"put"}}') expect(message.data.response).toBe('put-success') return case 11: expect(message.data.status).toBe(0) expect(message.data.method).toBe("DELETE") expect(message.data.params).toEqual('') expect(message.data.statusType).toBe("request") expect(message.data.url).toBe("http://localhost:9003/deleteTest") expect(message.data.body).toBe('') return case 12: expect(message.data.status).toBe(200) expect(message.data.method).toBe("DELETE") expect(message.data.params).toEqual('') expect(message.data.statusType).toBe("response") expect(message.data.costTime).toBeGreaterThan(1) expect(message.data.url).toBe("http://localhost:9003/deleteTest") expect(message.data.body).toBe('') expect(message.data.response).toBe('delete-success') setTimeout(()=>{ testInstance.apis('networkStop') testInstance.apis('networkCancelPatch') done() },200) return default: fail('receive error message') } } apply(pipe,config){ const { registerReciveMessage } = pipe registerReciveMessage(this.getMessage) } } testInstance.useMiddle('sendMessage',(interrupt,next)=>(message)=>{ message['testAdd'] = 1; next(message) }) testInstance.use(network) testInstance.use(ConsumerService) //ajax axios.post(testRequest,{test:111,params:{type:'post'}}) .finally(()=>new Promise((res)=>setTimeout(()=>axios.get(test404).finally(res),200))) .finally(()=>new Promise((res)=>setTimeout(()=>axios.get(test500).finally(res),200))) .finally(()=>new Promise((res)=>setTimeout(()=>axios.get(testTimeout).finally(res),200))) //add put methd .finally(()=>new Promise((res)=>setTimeout(()=>axios.put(put,{test:111,params:{type:'put'}}).finally(res),200))) .finally(()=>new Promise((res)=>setTimeout(()=>axios.delete(deleteURL).finally(res),200))) }) it('KeepObserverNetwork fetch catch',function(done){ console.log('start KeepObserverNetwork fetch catch') var receiveCount = 0; class ConsumerService{ getMessage(message){ expect(message.type).toBe(`monitor`) expect(message.typeName).toBe(`network`) expect(message.testAdd).toBe(2) expect(message.data.type).toBe('fetch') switch(++receiveCount){ case 1: expect(message.data.status).toBe(0) expect(message.data.method).toBe("POST") expect(message.data.params).toEqual({time:'2000'}) expect(message.data.statusType).toBe("request") expect(message.data.url).toBe("http://localhost:9003/report") expect(message.data.body).toBe('{"test":111,"params":{"type":"post"}}') return case 2: expect(message.data.status).toBe(200) expect(message.data.method).toBe("POST") expect(message.data.params).toEqual({time:'2000'}) expect(message.data.statusType).toBe("response") expect(message.data.costTime).toBeGreaterThan(1) expect(message.data.url).toBe("http://localhost:9003/report") expect(message.data.body).toBe('{"test":111,"params":{"type":"post"}}') expect(message.data.response).toBe('{"code":2000,"data":{"test":111}}') return case 3: expect(message.data.method).toBe("GET") expect(message.data.status).toBe(0) expect(message.data.params).toBe('') expect(message.data.statusType).toBe("request") expect(message.data.url).toBe("http://localhost:9003/404") expect(message.data.body).toBe('') return case 4: expect(message.data.status).toBe(404) expect(message.data.method).toBe("GET") expect(message.data.params).toBe('') expect(message.data.statusType).toBe("response") expect(message.data.url).toBe("http://localhost:9003/404") expect(message.data.body).toBe('') expect(message.data.isError).toBeTrue() expect(message.data.response).toBe('fetch error:Not Found') expect(message.data.errorContent).toBe('ajax request error! error statusCode:404') return case 5: expect(message.data.method).toBe("GET") expect(message.data.status).toBe(0) expect(message.data.params).toBe('') expect(message.data.statusType).toBe("request") expect(message.data.url).toBe("http://localhost:9003/500") expect(message.data.body).toBe('') return case 6: expect(message.data.status).toBe(500) expect(message.data.method).toBe("GET") expect(message.data.params).toBe('') expect(message.data.statusType).toBe("response") expect(message.data.url).toBe("http://localhost:9003/500") expect(message.data.body).toBe('') expect(message.data.isError).toBeTrue() expect(message.data.response).toBe('fetch error:Internal Server Error') expect(message.data.errorContent).toBe('ajax request error! error statusCode:500') return case 7: expect(message.data.method).toBe("GET") expect(message.data.status).toBe(0) expect(message.data.params).toBe('') expect(message.data.statusType).toBe("request") expect(message.data.url).toBe("http://localhost:9003/timeout") expect(message.data.body).toBe('') return case 8: expect(message.data.status).toBe(0) expect(message.data.method).toBe("GET") expect(message.data.params).toBe('') expect(message.data.statusType).toBe("response") expect(message.data.url).toBe("http://localhost:9003/timeout") expect(message.data.body).toBe('') expect(message.data.isError).toBeTrue() expect(message.data.timeout).toBe(20000) //default timeout 20000 ms expect(message.data.response).toBe('ajax request timeout,time:20000(ms)') expect(message.data.errorContent).toBe('ajax request timeout,time:20000(ms)') return //add method case 9: expect(message.data.status).toBe(0) expect(message.data.method).toBe("PUT") expect(message.data.params).toEqual('') expect(message.data.statusType).toBe("request") expect(message.data.url).toBe("http://localhost:9003/putTest") expect(message.data.body).toBe('{"test":111,"params":{"type":"put"}}') return case 10: expect(message.data.status).toBe(200) expect(message.data.method).toBe("PUT") expect(message.data.params).toEqual('') expect(message.data.statusType).toBe("response") expect(message.data.costTime).toBeGreaterThan(1) expect(message.data.url).toBe("http://localhost:9003/putTest") expect(message.data.body).toBe('{"test":111,"params":{"type":"put"}}') expect(message.data.response).toBe('put-success') return case 11: expect(message.data.status).toBe(0) expect(message.data.method).toBe("DELETE") expect(message.data.params).toEqual('') expect(message.data.statusType).toBe("request") expect(message.data.url).toBe("http://localhost:9003/deleteTest") expect(message.data.body).toBe('') return case 12: expect(message.data.status).toBe(200) expect(message.data.method).toBe("DELETE") expect(message.data.params).toEqual('') expect(message.data.statusType).toBe("response") expect(message.data.costTime).toBeGreaterThan(1) expect(message.data.url).toBe("http://localhost:9003/deleteTest") expect(message.data.body).toBe('') expect(message.data.response).toBe('delete-success') setTimeout(()=>{ testInstance.apis('networkStop') testInstance.apis('networkCancelPatch') done() },200) return default: fail('receive error message') } } apply(pipe,config){ const { registerReciveMessage } = pipe registerReciveMessage(this.getMessage) } } testInstance.useMiddle('sendMessage',(interrupt,next)=>(message)=>{ message['testAdd'] = 2; next(message) }) testInstance.use(network) testInstance.use(ConsumerService) //fetch fetch(testRequest,{method:'post',body:{test:111,params:{type:'post'}}}) .finally(()=>new Promise((res)=>setTimeout(()=>fetch(test404).finally(res),200))) .finally(()=>new Promise((res)=>setTimeout(()=>fetch(test500).finally(res),200))) .finally(()=>new Promise((res)=>setTimeout(()=>fetch(testTimeout).finally(res),200))) //add put methd .finally(()=>new Promise((res)=>setTimeout(()=>fetch(put,{method:'put',body:{test:111,params:{type:'put'}}}).finally(res),200))) .finally(()=>new Promise((res)=>setTimeout(()=>fetch(deleteURL,{method:'delete'}).finally(res),200))) }) });