Skip to content

Commit

Permalink
Merge remote-tracking branch 'remotes/origin/pr/1080'
Browse files Browse the repository at this point in the history
# Conflicts:
#	BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj

merges PR #1080
closes PR #1080
(let's see if either of these can do it)
  • Loading branch information
zeromus committed Mar 13, 2018
2 parents d481624 + 07da017 commit b179a30
Show file tree
Hide file tree
Showing 8 changed files with 906 additions and 7 deletions.
149 changes: 149 additions & 0 deletions Assets/Lua/UnitTests/TestCommunication_All.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
function round(num, numDecimalPlaces)
local mult = 10^(numDecimalPlaces or 0)
return math.floor(num * mult + 0.5) / mult
end

function get_baseline()
i = 100
client.reboot_core()
t = os.clock()

while i > 0 do
emu.frameadvance()
i = i - 1
end
baseline = os.clock() - t
print('Baseline: ' .. round(baseline, 3) .. " secs")
return baseline
end

function test_mmf()
i = 100
client.reboot_core()
t = os.clock()
while i > 0 do
emu.frameadvance()
comm.mmfScreenshot()
i = i - 1
end
print('Memory mapped files: ' .. round((os.clock() - t - baseline), 3) .. " secs")
end

function test_http()
print("Testing HTTP server")
client.reboot_core()
i = 100
t = os.clock()

while i > 0 do
emu.frameadvance()
comm.httpTestGet()
i = i - 1
end
print('HTTP get: ' .. round((os.clock() - t - baseline), 3) .. " secs")

client.reboot_core()
i = 100
t = os.clock()

while i > 0 do
emu.frameadvance()
comm.httpPostScreenshot()
i = i - 1
end
print('HTTP post: ' .. round((os.clock() - t - baseline), 3) .. " secs")

end

function test_socket()

i = 100
client.reboot_core()
t = os.clock()
while i > 0 do
emu.frameadvance()
comm.socketServerScreenShot()
i = i - 1
end
print('Socket server: ' .. round((os.clock() - t - baseline), 3) .. " secs")
end

function test_socketresponse()
best_time = -100
timeouts = {1, 2, 3, 4, 5, 10, 20, 25, 50, 100, 250, 500, 1000}
comm.socketServerSetTimeout(1000)
resp = comm.socketServerScreenShotResponse()
for t, timeout in ipairs(timeouts) do
comm.socketServerSetTimeout(timeout)
client.reboot_core()
print("Trying to find minimal timeout for Socket server")
i = 100
t = os.clock()
while i > 0 do
emu.frameadvance()
resp = comm.socketServerScreenShotResponse()
if resp ~= 'ack' then
i = -100
print(resp)
print("Failed to a get a proper response")
end
i = i - 1
end
if i > -100 then
print("Best timeout: " .. timeout .. " msecs")
print("Best time: " .. round((os.clock() - t - baseline), 3) .. " secs")
break
end
end

end

function test_http_response()
err = false
print("Testing HTTP server response")
client.reboot_core()
i = 100

while i > 0 do
emu.frameadvance()
resp = comm.httpTestGet()
if resp ~= "<html><body><h1>hi!</h1></body></html>" then
print("Failed to get correct HTTP get response")
print(resp)
i = 0
err = true
end
i = i - 1
end
if not err then
print("HTTP GET looks fine: No errors occurred")
end

client.reboot_core()
i = 100
err = false
while i > 0 do
emu.frameadvance()
resp = comm.httpPostScreenshot()
if resp ~= "<html><body>OK</body></html>" then
print("Failed to get correct HTTP post response")
print(resp)
i = 0
err = true
end
i = i - 1
end
if not err then
print("HTTP POST looks fine: No errors occurred")
end
end

baseline = get_baseline()
test_socket()
test_mmf()
test_http()
print("#####################")
test_http_response()
test_socketresponse()
print()

91 changes: 91 additions & 0 deletions Assets/Lua/UnitTests/TestCommunication_Simple.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
print("##########################################################")
getUrl = comm.httpGetGetUrl()
print("GET URL: " .. getUrl)

postUrl = comm.httpGetPostUrl()
print("POST URL: " .. postUrl)

print("\nChecking GET URL change")
error = false
comm.httpSetGetUrl('a')
if (getUrl ~= comm.httpGetGetUrl()) then
comm.httpSetGetUrl(getUrl)
error = (getUrl ~= comm.httpGetGetUrl())
else
error = true
end

if error == false then
print("Get URL was successfully changed")
else
print("Error while changing Get URL")
end


print("\nChecking POST URL change")
error = false
comm.httpSetPostUrl('a')
if (postUrl ~= comm.httpGetPostUrl()) then
comm.httpSetPostUrl(postUrl)
error = (postUrl ~= comm.httpGetPostUrl())
else
error = true
end

if error == false then
print("Post URL was successfully changed")
else
print("Error while changing Post URL")
end

print("\nChecking GET request")
getResponse = comm.httpGet("http://tasvideos.org/BizHawk.html")
if string.find(getResponse, "Bizhawk") then
print("GET seems to work")
else
print("Either the Bizhawk site is down or the GET does not work")
end

print("\nChecking memory mapped filed")

size = comm.mmfScreenshot()
if size > 0 then
print("Memory mapped file was successfully written")
else
print("Failed to write memory mapped file")
end

mmf_filename = comm.mmfGetFilename()
print("MMF filename: " .. mmf_filename)
comm.mmfSetFilename("deleteme.tmp")
error = false
if (mmf_filename ~= comm.mmfGetFilename()) then
comm.mmfSetFilename(mmf_filename)
error = (mmf_filename ~= comm.mmfGetFilename())
else
error = true
end
if error == false then
print("MMF filename successfully changed")
else
print("MMF filename change failed")
end

print("Writing to MMF")

message = "ABC"
resp_n = tonumber(comm.mmfWrite(mmf_filename, message))
if (resp_n ~= string.len(message)) then
print("Failed to write to MMF")
else
resp = comm.mmfRead(mmf_filename, string.len(message))
if (resp ~= message) then
print("Failed to read from MMF")
else
print("MMF read and read OK")
end
end


print("\nTests finished")
print("Please run TestCommunication_All.lua with the supplied Python server for a more comprehensive test")
57 changes: 52 additions & 5 deletions BizHawk.Client.EmuHawk/ArgParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,14 @@ class ArgParser
public bool luaConsole = false;
public int socket_port = 9999;
public string socket_ip = null;
public string mmf_filename = null;
public string URL_get = null;
public string URL_post = null;

public void ParseArguments(string[] args)

public void parseArguments(string[] args)

{
for (int i = 0; i<args.Length; i++)
for (int i = 0; i < args.Length; i++)
{
// For some reason sometimes visual studio will pass this to us on the commandline. it makes no sense.
if (args[i] == ">")
Expand Down Expand Up @@ -62,8 +65,8 @@ public void parseArguments(string[] args)
}
else if (arg.StartsWith("--dump-frames="))
{
var list = arg.Substring(arg.IndexOf('=') + 1);
var items = list.Split(',');
string list = arg.Substring(arg.IndexOf('=') + 1);
string[] items = list.Split(',');
_currAviWriterFrameList = new HashSet<int>();
foreach (string item in items)
{
Expand Down Expand Up @@ -110,11 +113,55 @@ public void parseArguments(string[] args)
{
socket_ip = arg.Substring(arg.IndexOf('=') + 1);
}
else if (arg.StartsWith("--mmf="))
{
mmf_filename = args[i].Substring(args[i].IndexOf('=') + 1);
}
else if (arg.StartsWith("--url_get="))
{
URL_get = args[i].Substring(args[i].IndexOf('=') + 1);
}
else if (arg.StartsWith("--url_post="))
{
URL_post = args[i].Substring(args[i].IndexOf('=') + 1);
}
else
{
cmdRom = args[i];
}
}
////initialize HTTP communication
if (URL_get != null || URL_post != null)
{
if (URL_get != null)
{
GlobalWin.httpCommunication.initialized = true;
GlobalWin.httpCommunication.SetGetUrl(URL_get);
}
if (URL_post != null)
{
GlobalWin.httpCommunication.initialized = true;
GlobalWin.httpCommunication.SetPostUrl(URL_post);
}
}
//inititalize socket server
if (socket_ip != null && socket_port > -1)
{
GlobalWin.socketServer.initialized = true;
GlobalWin.socketServer.SetIp(socket_ip, socket_port);
}
else if (socket_ip != null)
{
GlobalWin.socketServer.initialized = true;
GlobalWin.socketServer.SetIp(socket_ip);
}

//initialize mapped memory files
if (mmf_filename != null)
{
GlobalWin.memoryMappedFiles.initialized = true;
GlobalWin.memoryMappedFiles.SetFilename(mmf_filename);
}
}
}
}
5 changes: 4 additions & 1 deletion BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.DirectoryServices" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Numerics" />
<Reference Include="System.Xaml" />
<Reference Include="System.Xml.Linq">
Expand Down Expand Up @@ -197,6 +198,7 @@
<Compile Include="BizBoxInfoControl.Designer.cs">
<DependentUpon>BizBoxInfoControl.cs</DependentUpon>
</Compile>
<Compile Include="Communication.cs" />
<Compile Include="config\AnalogRangeConfig.cs">
<SubType>Component</SubType>
</Compile>
Expand Down Expand Up @@ -877,6 +879,7 @@
<DependentUpon>NewHexEditor.cs</DependentUpon>
</Compile>
<Compile Include="tools\Lua\Libraries\EmuLuaLibrary.Client.cs" />
<Compile Include="tools\Lua\Libraries\EmuLuaLibrary.Communication.cs" />
<Compile Include="tools\Lua\Libraries\EmuLuaLibrary.Console.cs" />
<Compile Include="tools\Lua\Libraries\EmuLuaLibrary.cs" />
<Compile Include="tools\Lua\Libraries\EmuLuaLibrary.Forms.cs" />
Expand Down Expand Up @@ -2179,4 +2182,4 @@
<PreBuildEvent />
</PropertyGroup>
<Import Project="$(SolutionDir)Build\Common.targets" />
</Project>
</Project>
Loading

0 comments on commit b179a30

Please sign in to comment.