var baseName = "jstests_core_network_options"; // Tests for command line option canonicalization. See SERVER-13379. load('jstests/libs/command_line/test_parsed_options.js'); // Object Check jsTest.log("Testing \"objcheck\" command line option"); var expectedResult = {"parsed": {"net": {"wireObjectCheck": true}}}; testGetCmdLineOptsMongod({objcheck: ""}, expectedResult); jsTest.log("Testing \"noobjcheck\" command line option"); expectedResult = { "parsed": {"net": {"wireObjectCheck": false}} }; testGetCmdLineOptsMongod({noobjcheck: ""}, expectedResult); jsTest.log("Testing \"net.wireObjectCheck\" config file option"); expectedResult = { "parsed": { "config": "jstests/libs/config_files/enable_objcheck.json", "net": {"wireObjectCheck": true} } }; testGetCmdLineOptsMongod({config: "jstests/libs/config_files/enable_objcheck.json"}, expectedResult); jsTest.log("Testing with no explicit network option setting"); expectedResult = { "parsed": {"net": {}} }; testGetCmdLineOptsMongod({}, expectedResult); // HTTP Interface jsTest.log("Testing \"httpinterface\" command line option"); var expectedResult = {"parsed": {"net": {"http": {"enabled": true}}}}; testGetCmdLineOptsMongod({httpinterface: ""}, expectedResult); jsTest.log("Testing \"nohttpinterface\" command line option"); expectedResult = { "parsed": {"net": {"http": {"enabled": false}}} }; testGetCmdLineOptsMongod({nohttpinterface: ""}, expectedResult); jsTest.log("Testing implicit enabling of http interface with \"jsonp\" command line option"); expectedResult = { "parsed": {"net": {"http": {"JSONPEnabled": true, "enabled": true}}} }; testGetCmdLineOptsMongod({jsonp: ""}, expectedResult); jsTest.log("Testing implicit enabling of http interface with \"rest\" command line option"); expectedResult = { "parsed": {"net": {"http": {"RESTInterfaceEnabled": true, "enabled": true}}} }; testGetCmdLineOptsMongod({rest: ""}, expectedResult); jsTest.log("Testing \"net.http.enabled\" config file option"); expectedResult = { "parsed": { "config": "jstests/libs/config_files/enable_httpinterface.json", "net": {"http": {"enabled": true}} } }; testGetCmdLineOptsMongod({config: "jstests/libs/config_files/enable_httpinterface.json"}, expectedResult); jsTest.log("Testing with no explicit network option setting"); expectedResult = { "parsed": {"net": {}} }; testGetCmdLineOptsMongod({}, expectedResult); // Unix Socket if (!_isWindows()) { jsTest.log("Testing \"nounixsocket\" command line option"); expectedResult = {"parsed": {"net": {"unixDomainSocket": {"enabled": false}}}}; testGetCmdLineOptsMongod({nounixsocket: ""}, expectedResult); jsTest.log("Testing \"net.wireObjectCheck\" config file option"); expectedResult = { "parsed": { "config": "jstests/libs/config_files/enable_unixsocket.json", "net": {"unixDomainSocket": {"enabled": true}} } }; testGetCmdLineOptsMongod({config: "jstests/libs/config_files/enable_unixsocket.json"}, expectedResult); jsTest.log("Testing with no explicit network option setting"); expectedResult = {"parsed": {"net": {}}}; testGetCmdLineOptsMongod({}, expectedResult); } // Test that we preserve switches explicitly set to false in config files. See SERVER-13439. jsTest.log("Testing explicitly disabling \"net.http.RESTInterfaceEnabled\" config file option"); expectedResult = { "parsed": { "config": "jstests/libs/config_files/disable_rest_interface.json", "net": {"http": {"RESTInterfaceEnabled": false}} } }; testGetCmdLineOptsMongod({config: "jstests/libs/config_files/disable_rest_interface.json"}, expectedResult); jsTest.log("Testing explicitly disabling \"net.http.JSONPEnabled\" config file option on mongoD"); expectedResult = { "parsed": { "config": "jstests/libs/config_files/disable_jsonp.json", "net": {"http": {"JSONPEnabled": false}} } }; testGetCmdLineOptsMongod({config: "jstests/libs/config_files/disable_jsonp.json"}, expectedResult); // jsonp on mongos is legacy and not supported in json/yaml config files since this interface is not // well defined. See SERVER-11707 for an example. jsTest.log("Testing explicitly disabling \"jsonp\" config file option on mongoS"); expectedResult = { "parsed": { "config": "jstests/libs/config_files/disable_jsonp.ini", "net": {"http": {"JSONPEnabled": false}} } }; testGetCmdLineOptsMongos({config: "jstests/libs/config_files/disable_jsonp.ini"}, expectedResult); jsTest.log("Testing explicitly disabled \"objcheck\" config file option"); expectedResult = { "parsed": { "config": "jstests/libs/config_files/disable_objcheck.ini", "net": {"wireObjectCheck": false} } }; testGetCmdLineOptsMongod({config: "jstests/libs/config_files/disable_objcheck.ini"}, expectedResult); jsTest.log("Testing explicitly disabled \"noobjcheck\" config file option"); expectedResult = { "parsed": { "config": "jstests/libs/config_files/disable_noobjcheck.ini", "net": {"wireObjectCheck": true} } }; testGetCmdLineOptsMongod({config: "jstests/libs/config_files/disable_noobjcheck.ini"}, expectedResult); jsTest.log("Testing explicitly disabled \"httpinterface\" config file option"); expectedResult = { "parsed": { "config": "jstests/libs/config_files/disable_httpinterface.ini", "net": {"http": {"enabled": false}} } }; testGetCmdLineOptsMongod({config: "jstests/libs/config_files/disable_httpinterface.ini"}, expectedResult); jsTest.log("Testing explicitly disabled \"nohttpinterface\" config file option"); expectedResult = { "parsed": { "config": "jstests/libs/config_files/disable_nohttpinterface.ini", "net": {"http": {"enabled": true}} } }; testGetCmdLineOptsMongod({config: "jstests/libs/config_files/disable_nohttpinterface.ini"}, expectedResult); jsTest.log("Testing explicitly disabled \"ipv6\" config file option"); expectedResult = { "parsed": {"config": "jstests/libs/config_files/disable_ipv6.ini", "net": {"ipv6": false}} }; testGetCmdLineOptsMongod({config: "jstests/libs/config_files/disable_ipv6.ini"}, expectedResult); if (!_isWindows()) { jsTest.log("Testing explicitly disabled \"nounixsocket\" config file option"); expectedResult = { "parsed": { "config": "jstests/libs/config_files/disable_nounixsocket.ini", "net": {"unixDomainSocket": {"enabled": true}} } }; testGetCmdLineOptsMongod({config: "jstests/libs/config_files/disable_nounixsocket.ini"}, expectedResult); } print(baseName + " succeeded.");