Skip to content

Commit 01c261b

Browse files
committed
Merge pull request #146 from uProxy/iislucas-separate-signal
Separate signal types from peerconnection
2 parents fbae14b + 39cebee commit 01c261b

File tree

8 files changed

+119
-101
lines changed

8 files changed

+119
-101
lines changed

Gruntfile.coffee

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ taskManager.add 'copypasteFreedomChat', [
4646
]
4747

4848
# Create unit test code
49-
taskManager.add 'browserify_specs', [
49+
taskManager.add 'browserifySpecs', [
5050
'base'
5151
'browserify:arraybuffersSpec'
5252
'browserify:handlerSpec'
@@ -58,9 +58,22 @@ taskManager.add 'browserify_specs', [
5858
'browserify:queueSpec'
5959
]
6060

61+
# Create unit test code
62+
taskManager.add 'browserifyCovSpecs', [
63+
'base'
64+
'browserify:arraybuffersCovSpec'
65+
'browserify:handlerCovSpec'
66+
'browserify:buildToolsTaskmanagerCovSpec'
67+
'browserify:loggingCovSpec'
68+
'browserify:loggingProviderCovSpec'
69+
'browserify:peerconnectionCovSpec'
70+
'browserify:datachannelCovSpec'
71+
'browserify:queueCovSpec'
72+
]
73+
6174
# Run unit tests
6275
taskManager.add 'unit_test', [
63-
'browserify_specs',
76+
'browserifySpecs',
6477
'jasmine:arraybuffers'
6578
'jasmine:handler'
6679
'jasmine:buildTools'
@@ -73,7 +86,7 @@ taskManager.add 'unit_test', [
7386
# Run unit tests to produce coverage; these are separate from unit_tests because
7487
# they make tests hard to debug and fix.
7588
taskManager.add 'coverage', [
76-
'browserify_specs'
89+
'browserifyCovSpecs'
7790
'jasmine:arraybuffersCov'
7891
'jasmine:handlerCov'
7992
'jasmine:buildToolsCov'
@@ -212,13 +225,21 @@ module.exports = (grunt) ->
212225
loggingProvider: Rule.browserify 'loggingprovider/freedom-module'
213226
# Browserify specs
214227
arraybuffersSpec: Rule.browserifySpec 'arraybuffers/arraybuffers'
228+
arraybuffersCovSpec: Rule.addCoverageToBrowserify(Rule.browserifySpec 'arraybuffers/arraybuffers')
215229
buildToolsTaskmanagerSpec: Rule.browserifySpec 'build-tools/taskmanager'
230+
buildToolsTaskmanagerCovSpec: Rule.addCoverageToBrowserify(Rule.browserifySpec 'build-tools/taskmanager')
216231
handlerSpec: Rule.browserifySpec 'handler/queue'
232+
handlerCovSpec: Rule.addCoverageToBrowserify(Rule.browserifySpec 'handler/queue')
217233
loggingProviderSpec: Rule.browserifySpec 'loggingprovider/loggingprovider'
234+
loggingProviderCovSpec: Rule.addCoverageToBrowserify(Rule.browserifySpec 'loggingprovider/loggingprovider')
218235
loggingSpec: Rule.browserifySpec 'logging/logging'
236+
loggingCovSpec: Rule.addCoverageToBrowserify(Rule.browserifySpec 'logging/logging')
219237
peerconnectionSpec: Rule.browserifySpec 'webrtc/peerconnection'
238+
peerconnectionCovSpec: Rule.addCoverageToBrowserify(Rule.browserifySpec 'webrtc/peerconnection')
220239
datachannelSpec: Rule.browserifySpec 'webrtc/datachannel'
240+
datachannelCovSpec: Rule.addCoverageToBrowserify(Rule.browserifySpec 'webrtc/datachannel')
221241
queueSpec: Rule.browserifySpec 'queue/queue'
242+
queueCovSpec: Rule.addCoverageToBrowserify(Rule.browserifySpec 'queue/queue')
222243
# Browserify sample apps main freedom module and core environments
223244
copypasteFreedomChatFreedomModule: Rule.browserify 'samples/copypaste-freedom-chat/freedom-module'
224245
copypasteFreedomChatMain: Rule.browserify 'samples/copypaste-freedom-chat/main.core-env'

src/build-tools/common-grunt-rules.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export interface BrowserifyRule {
3939
src :string[];
4040
dest :string;
4141
options ?:{
42+
transform ?:Object[][];
4243
debug ?:boolean;
4344
};
4445
}
@@ -59,6 +60,7 @@ export interface CopyRule {
5960
export class Rule {
6061
constructor(public config :RuleConfig) {}
6162

63+
// Note: argument is modified (and returned for conveniece);
6264
public addCoverageToSpec(spec:JasmineRule) :JasmineRule {
6365
var basePath = path.dirname(spec.options.outfile);
6466

@@ -96,18 +98,26 @@ export class Rule {
9698
// Grunt browserify target creator
9799
public browserify(filepath:string, options = {
98100
browserifyOptions: { standalone: 'browserified_exports' }
99-
}) : BrowserifyRule {
101+
}) :BrowserifyRule {
100102
return {
101103
src: [ path.join(this.config.devBuildPath, filepath + '.js') ],
102104
dest: path.join(this.config.devBuildPath, filepath + '.static.js'),
103105
options: options
104106
};
105107
}
106108

109+
// Note: argument is modified (and returned for conveniece);
110+
public addCoverageToBrowserify(rule:BrowserifyRule) :BrowserifyRule {
111+
if(!rule.options.transform) {
112+
rule.options.transform = [];
113+
}
114+
rule.options.transform.push(
115+
['browserify-istanbul', { ignore: ['**/mocks/**', '**/*.spec.js'] }]);
116+
return rule
117+
}
118+
107119
// Grunt browserify target creator, instrumented for istanbul
108120
public browserifySpec(filepath:string, options = {
109-
transform: [['browserify-istanbul',
110-
{ ignore: ['**/mocks/**', '**/*.spec.js'] }]],
111121
browserifyOptions: { standalone: 'browserified_exports' }
112122
}) : BrowserifyRule {
113123
return {

src/samples/copypaste-freedom-chat/freedom-module.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33

44
import logging = require('../../logging/logging');
55

6+
import signals = require('../../webrtc/signals');
67
import peerconnection = require('../../webrtc/peerconnection');
78
import PeerConnection = peerconnection.PeerConnection;
8-
import SignallingMessage = peerconnection.SignallingMessage;
99
import DataChannel = peerconnection.DataChannel;
1010
import Data = peerconnection.Data;
1111

@@ -35,12 +35,12 @@ export function connectDataChannel(d:DataChannel) {
3535
});
3636
}
3737

38-
export function makePeerConnection() : PeerConnection<SignallingMessage> {
39-
var pc :PeerConnection<SignallingMessage> =
38+
export function makePeerConnection() : PeerConnection<signals.Message> {
39+
var pc :PeerConnection<signals.Message> =
4040
peerconnection.createPeerConnection(pcConfig);
4141

42-
pc.signalForPeerQueue.setSyncHandler((signal:SignallingMessage) => {
43-
parentModule.emit('signalForPeer', signal);
42+
pc.signalForPeerQueue.setSyncHandler((message:signals.Message) => {
43+
parentModule.emit('signalForPeer', message);
4444
});
4545

4646
pc.onceConnected.then(() => {
@@ -62,7 +62,7 @@ export function makePeerConnection() : PeerConnection<SignallingMessage> {
6262
return pc;
6363
}
6464

65-
export var pc :PeerConnection<SignallingMessage>;
65+
export var pc :PeerConnection<signals.Message>;
6666

6767
parentModule.on('start', () => {
6868
pc = makePeerConnection();
@@ -82,9 +82,9 @@ parentModule.on('start', () => {
8282
// Receive signalling channel messages from the UI.
8383
// If pc doesn't exist yet then we are responding to the remote
8484
// peer's initiation.
85-
parentModule.on('signalFromPeer', (signal:SignallingMessage) => {
85+
parentModule.on('signalFromPeer', (message:signals.Message) => {
8686
if (pc === undefined) {
8787
pc = makePeerConnection();
8888
}
89-
pc.handleSignalMessage(signal);
89+
pc.handleSignalMessage(message);
9090
});

src/samples/simple-freedom-chat/freedom-module.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33

44
import logging = require('../../logging/logging');
55

6+
import signals = require('../../webrtc/signals');
67
import peerconnection = require('../../webrtc/peerconnection');
78
import PeerConnection = peerconnection.PeerConnection;
8-
import SignallingMessage = peerconnection.SignallingMessage;
99
import DataChannel = peerconnection.DataChannel;
1010
import Data = peerconnection.Data;
1111

@@ -30,7 +30,7 @@ function connectDataChannel(name:string, d:DataChannel) {
3030
d.toString());
3131
});
3232
d.dataFromPeerQueue.setSyncHandler((data:Data) => {
33-
log.info(name + ': dataFromPeer: ' + JSON.stringify(data));
33+
log.info('%1: dataFromPeer: %2', name, data);
3434
// Handle messages received on the datachannel(s).
3535
parentFreedomModule.emit('receive' + name, {
3636
message: data.str
@@ -49,7 +49,7 @@ function makePeerConnection(name:string) {
4949
urls: ['stun:stun.l.google.com:19302']},
5050
{urls: ['stun:stun1.l.google.com:19302']}]
5151
};
52-
var pc :PeerConnection<SignallingMessage> =
52+
var pc :PeerConnection<signals.Message> =
5353
peerconnection.createPeerConnection(pcConfig, name);
5454
pc.onceConnecting.then(() => { log.info(name + ': connecting...'); });
5555
pc.onceConnected.then(() => {
@@ -68,18 +68,18 @@ function makePeerConnection(name:string) {
6868
return pc;
6969
}
7070

71-
var a :PeerConnection<SignallingMessage> = makePeerConnection('A');
72-
var b :PeerConnection<SignallingMessage> = makePeerConnection('B')
71+
var a :PeerConnection<signals.Message> = makePeerConnection('A');
72+
var b :PeerConnection<signals.Message> = makePeerConnection('B')
7373

7474
// Connect the two signalling channels. Normally, these messages would be sent
7575
// over the internet.
76-
a.signalForPeerQueue.setSyncHandler((signal:SignallingMessage) => {
77-
log.info('a: sending signal to b.');
78-
b.handleSignalMessage(signal);
76+
a.signalForPeerQueue.setSyncHandler((message:signals.Message) => {
77+
log.info('a: sending signalling message to b.');
78+
b.handleSignalMessage(message);
7979
});
80-
b.signalForPeerQueue.setSyncHandler((signal:SignallingMessage) => {
81-
log.info('b: sending signal to a.');
82-
a.handleSignalMessage(signal);
80+
b.signalForPeerQueue.setSyncHandler((message:signals.Message) => {
81+
log.info('b: sending signalling message to a.');
82+
a.handleSignalMessage(message);
8383
});
8484

8585
// Negotiate a peerconnection. Once negotiated, enable the UI and add

src/webrtc/datachannel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ export class DataChannelClass implements DataChannel {
184184
} else if (message.buffer instanceof ArrayBuffer) {
185185
this.dataFromPeerQueue.handle({buffer: message.buffer});
186186
} else {
187-
log.error('Unexpected data from peer: ' + JSON.stringify(message));
187+
log.error('Unexpected data from peer: %1', message);
188188
}
189189
}
190190

src/webrtc/peerconnection.spec.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ freedom = freedomMocker.makeMockFreedomInModuleEnv({
1414
'rtcdatachannel': () => { return new MockFreedomRtcDataChannel(); }
1515
});
1616

17-
import PeerConnection = require('./peerconnection');
18-
import PeerConnectionClass = PeerConnection.PeerConnectionClass;
17+
import signals = require('./signals');
18+
import peerconnection = require('./peerconnection');
1919

2020
describe('PeerConnection', function() {
2121
var mockRtcPeerConnection :MockFreedomRtcPeerConnection;
@@ -56,12 +56,13 @@ describe('PeerConnection', function() {
5656
var setLocalDescriptionSpy =
5757
spyOn(mockRtcPeerConnection, 'setLocalDescription');
5858

59-
var pc = new PeerConnectionClass(mockRtcPeerConnection, 'test');
59+
var pc = new peerconnection.PeerConnectionClass(
60+
mockRtcPeerConnection, 'test');
6061
pc.negotiateConnection();
6162

6263
pc.signalForPeerQueue.setSyncNextHandler(
63-
(signal:PeerConnection.SignallingMessage) => {
64-
expect(signal.type).toEqual(PeerConnection.SignalType.OFFER);
64+
(message:signals.Message) => {
65+
expect(message.type).toEqual(signals.Type.OFFER);
6566
expect(mockRtcPeerConnection.setLocalDescription).not.toHaveBeenCalled();
6667
done();
6768
});

0 commit comments

Comments
 (0)