sogo/Misc/db/tests/znek/inserts.m
dev-unix.inverse.qc.ca f18c764ffa see ChangeLog
Monotone-Revision: 9054022ef1ca8aeba6e34842d27d9b94ce002b89

Monotone-Author: dev-unix.inverse.qc.ca
Monotone-Date: 2006-06-15T19:34:10
Monotone-Branch: ca.inverse.sogo
2006-06-15 19:34:10 +00:00

193 lines
5.7 KiB
Objective-C

/*
@DISCLAIMER@
*/
// $Id$
#import <Foundation/Foundation.h>
#import <EOAccess/EOAccess.h>
#import <NGExtensions/NGExtensions.h>
#import "NSArray+random.h"
#define DEBUG 0
#define PERSON_RECORDS @"/home/znek/all-BALI.plist"
int main(int argc, char **argv, char **env) {
NSAutoreleasePool *pool;
EOModel *m = nil;
EOAdaptor *a;
EOAdaptorContext *ctx;
EOAdaptorChannel *ch;
NSDictionary *conDict;
NSUserDefaults *ud;
pool = [[NSAutoreleasePool alloc] init];
#if LIB_FOUNDATION_LIBRARY
[NSProcessInfo initializeWithArguments:argv count:argc environment:env];
#endif
ud = [NSUserDefaults standardUserDefaults];
conDict = [NSDictionary dictionaryWithContentsOfFile:@"connection.plist"];
NSLog(@"condict is %@", conDict);
if ((a = [EOAdaptor adaptorWithName:@"PostgreSQL72"]) == nil) {
NSLog(@"found no PostgreSQL adaptor ..");
exit(1);
}
#if DEBUG
NSLog(@"got adaptor %@", a);
#endif
[a setConnectionDictionary:conDict];
#if DEBUG
NSLog(@"got adaptor with condict %@", a);
#endif
ctx = [a createAdaptorContext];
ch = [ctx createAdaptorChannel];
m = [[EOModel alloc] initWithContentsOfFile:@"inserts.eomodel"];
if (m) {
[a setModel:m];
[a setConnectionDictionary:conDict];
}
NSLog(@"opening channel ..");
#if DEBUG
[ch setDebugEnabled:YES];
#endif
if ([ch openChannel]) {
NSLog(@"channel is open");
#if 0
if ([ctx beginTransaction]) {
NSLog(@"began tx ..");
#endif
{
EOSQLQualifier *q;
NSArray *attrs;
NSString *expr;
#if 1
NS_DURING
if([ctx beginTransaction]) {
expr = @"DROP TABLE SOGo_test";
if([ch evaluateExpression:expr]) {
if([ctx commitTransaction]) {
NSLog(@"DROP'ed table - committed.");
} else {
NSLog(@"couldn't commit DROP TABLE!");
}
}
}
NS_HANDLER
NSLog(@"DROP table aborted - %@", [localException reason]);
[ctx rollbackTransaction];
NS_ENDHANDLER
#endif
NS_DURING
if([ctx beginTransaction]) {
expr = @"CREATE TABLE SOGo_test (c_id INT PRIMARY KEY, c_dir VARCHAR(300) NOT NULL, c_cn VARCHAR(80) NOT NULL, c_mailto VARCHAR(120) NOT NULL);";
if([ch evaluateExpression:expr]) {
if([ctx commitTransaction]) {
NSLog(@"CREATE TABLE - committed");
} else {
NSLog(@"couldn't commit CREATE TABLE!");
}
}
}
NS_HANDLER
fprintf(stderr, "exception: %s\n", [[localException description] cString]);
abort();
NS_ENDHANDLER;
// Now for some serious business...
if([ctx beginTransaction]) {
NSString *path;
NSArray *allPersonRecords;
unsigned i, count;
EOEntity *e;
NSArray *attributes, *attributesNames;
path = [ud stringForKey:@"PersonRecords"];
if(path == nil)
path = PERSON_RECORDS;
allPersonRecords = [NSArray arrayWithContentsOfFile:path];
NSCAssert([allPersonRecords count] != 0, @"allPersonRecords empty?!");
e = [m entityNamed:@"Test"];
attributes = [e attributesUsedForInsert];
attributesNames = [e attributesNamesUsedForInsert];
for(i = 0; i < 10000; i++) {
NSDictionary *pdata, *values;
NSMutableDictionary *row;
NSAutoreleasePool *lpool = [[NSAutoreleasePool alloc] init];
NSNumber *newPK;
pdata = [allPersonRecords randomObject];
#if DEBUG
NSLog(@"pdata: %@", pdata);
#endif
newPK = [NSNumber numberWithUnsignedInt:i + 1];
row = [pdata mutableCopy];
[row setObject:newPK forKey:[[e primaryKeyAttributeNames] lastObject]];
values = [e convertValuesToModel:row];
#if 0
pkey = [e primaryKeyForRow:values];
NSLog(@"pkey: %@", pkey);
#endif
if (![ch insertRow:values forEntity:e])
NSLog(@"Couldn't insert row!");
[lpool release];
}
if([ctx commitTransaction]) {
NSLog(@"INSERTS - committed");
} else {
NSLog(@"couldn't commit INSERTS!");
}
} else {
NSLog(@"Couldn't begin transaction?");
}
}
#if 0
NSLog(@"committing tx ..");
if ([ctx commitTransaction])
NSLog(@" could commit.");
else
NSLog(@" commit failed.");
}
#endif
NSLog(@"closing channel ..");
[ch closeChannel];
}
[m release];
[pool release];
exit(0);
return 0;
}