mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-21 15:31:17 +00:00
90 lines
2.3 KiB
Objective-C
90 lines
2.3 KiB
Objective-C
#import <Foundation/Foundation.h>
|
|
#import "Testing.h"
|
|
#import "ObjectTesting.h"
|
|
#import "Helpers/Launch.h"
|
|
|
|
|
|
int main()
|
|
{
|
|
#if GNUSTEP
|
|
ENTER_POOL
|
|
unsigned i;
|
|
NSURL *url;
|
|
NSData *data;
|
|
NSData *resp;
|
|
NSString *str;
|
|
NSTimeInterval wake = 10.0;
|
|
NSMutableString *m;
|
|
NSTask *t;
|
|
NSString *helpers;
|
|
NSString *keepalive;
|
|
|
|
helpers = [[NSFileManager defaultManager] currentDirectoryPath];
|
|
helpers = [helpers stringByAppendingPathComponent: @"Helpers"];
|
|
helpers = [helpers stringByAppendingPathComponent: @"obj"];
|
|
keepalive = [helpers stringByAppendingPathComponent: @"keepalive"];
|
|
|
|
/* The following test cases depend on the keepalive
|
|
* HTTP server. This server uses the GSInetServerStream
|
|
* class which is completely broken on Windows.
|
|
*
|
|
* See: https://github.com/gnustep/libs-base/issues/266
|
|
*
|
|
* We will mark the test cases as hopeful on Windows.
|
|
*/
|
|
|
|
START_SET("Keepalive")
|
|
|
|
#if defined(_WIN64) && defined(_MSC_VER)
|
|
SKIP("Known to crash on 64-bit Windows with Clang/MSVC.")
|
|
#elif defined(_WIN32)
|
|
NSLog(@"Marking local web server tests as hopeful because GSInetServerStream is broken on Windows");
|
|
testHopeful = YES;
|
|
#endif
|
|
|
|
url = [NSURL URLWithString: @"http://localhost:4322/"];
|
|
|
|
m = [NSMutableString stringWithCapacity: 2048];
|
|
for (i = 0; i < 128; i++)
|
|
{
|
|
[m appendFormat: @"Hello %d\r\n", i];
|
|
}
|
|
resp = [m dataUsingEncoding: NSASCIIStringEncoding];
|
|
[resp writeToFile: @"KAResponse.dat" atomically: YES];
|
|
|
|
t = [NSTask launchedHelperWithLaunchPath: keepalive
|
|
arguments: [NSArray arrayWithObjects:
|
|
@"-FileName", @"KAResponse.dat",
|
|
@"-CloseFreq", @"3",
|
|
@"-Count", @"10",
|
|
nil]
|
|
timeout: wake];
|
|
|
|
NEED(testPassed = (t != nil))
|
|
|
|
for (i = 0; i < 10; i++)
|
|
{
|
|
/*we just get the response every time. It should be the
|
|
*same every time, even though the headers change and
|
|
*sometimes the connection gets dropped
|
|
*/
|
|
char buf[BUFSIZ];
|
|
data = [url resourceDataUsingCache: NO];
|
|
str = [url propertyForKey: NSHTTPPropertyStatusCodeKey];
|
|
sprintf(buf, "keep-alive test %d OK",i);
|
|
PASS([data isEqual:resp], "%s", buf)
|
|
}
|
|
[t terminate];
|
|
[t waitUntilExit];
|
|
|
|
END_SET("Keepalive")
|
|
|
|
LEAVE_POOL
|
|
|
|
#if defined(_WIN32)
|
|
testHopeful = NO;
|
|
#endif
|
|
|
|
#endif
|
|
return 0;
|
|
}
|