summaryrefslogtreecommitdiffstats
path: root/dom/system/gonk/tests/marionette/test_multiple_data_connection.js
blob: 24abd445137cea6da7805dde9f811b155b7721dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

MARIONETTE_TIMEOUT = 60000;
MARIONETTE_HEAD_JS = "head.js";

// Must sync with hardware/ril/reference-ril/reference-ril.c
const MAX_DATA_CONTEXTS = 4;

function setEmulatorAPN() {
  // Use different apn for each network type.
  let apn = [[ { "carrier":"T-Mobile US",
                 "apn":"epc1.tmobile.com",
                 "types":["default"] },
               { "carrier":"T-Mobile US",
                 "apn":"epc2.tmobile.com",
                 "mmsc":"http://mms.msg.eng.t-mobile.com/mms/wapenc",
                 "types":["mms"] },
               { "carrier":"T-Mobile US",
                 "apn":"epc3.tmobile.com",
                 "types":["supl"] },
               { "carrier":"T-Mobile US",
                 "apn":"epc4.tmobile.com",
                 "types":["ims"] },
               { "carrier":"T-Mobile US",
                 "apn":"epc5.tmobile.com",
                 "types":["dun"] },
               { "carrier":"T-Mobile US",
                 "apn":"epc6.tmobile.com",
                 "types":["fota"] }]];

  return setSettings(SETTINGS_KEY_DATA_APN_SETTINGS, apn);
}

// Test initial State
function testInitialState() {
  log("= testInitialState =");

  // Data should be off before starting any test.
  return getSettings(SETTINGS_KEY_DATA_ENABLED)
    .then(value => {
      is(value, false, "Data must be off");
    });
}

function testSetupConcurrentDataCalls() {
  log("= testSetupConcurrentDataCalls =");

  let promise = Promise.resolve();
  // Skip default mobile type.
  for (let i = 1; i < MAX_DATA_CONTEXTS; i++) {
    let type = networkTypes[i];
    promise = promise.then(() => setupDataCallAndWait(type));
  }
  return promise;
}

function testDeactivateConcurrentDataCalls() {
  log("= testDeactivateConcurrentDataCalls =");

  let promise = Promise.resolve();
  // Skip default mobile type.
  for (let i = 1; i < MAX_DATA_CONTEXTS; i++) {
    let type = networkTypes[i];
    promise = promise.then(() => deactivateDataCallAndWait(type));
  }
  return promise;
}

// Start test
startTestBase(function() {

  let origApnSettings;
  return testInitialState()
    .then(() => getSettings(SETTINGS_KEY_DATA_APN_SETTINGS))
    .then(value => {
      origApnSettings = value;
    })
    .then(() => setEmulatorAPN())
    .then(() => setDataEnabledAndWait(true))
    .then(() => testSetupConcurrentDataCalls())
    .then(() => testDeactivateConcurrentDataCalls())
    .then(() => setDataEnabledAndWait(false))
    .then(() => {
      if (origApnSettings) {
        return setSettings(SETTINGS_KEY_DATA_APN_SETTINGS, origApnSettings);
      }
    });
});