Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Uploading test results now works.

Also added CouchbaseStartupTest to record startup time.
  • Loading branch information...
commit 3c6d46d3c261301b3b8d94fe064db6d7e3e7dab8 1 parent 97a0795
@snej snej authored
View
4 App/AppDelegate.h
@@ -8,7 +8,7 @@
#import <UIKit/UIKit.h>
#import <Couchbase/CouchbaseMobile.h>
-@class CouchDatabase;
+@class CouchDatabase, BeeTest;
@interface AppDelegate : UIResponder <UIApplicationDelegate, CouchbaseDelegate>
@@ -18,8 +18,10 @@
/** The URL of the Couchbase server. */
@property (readonly, retain, nonatomic) NSURL* serverURL;
+@property (readonly, retain, nonatomic) BeeTest* startupTest;
@end
+extern NSString* const AppDelegateCouchStartedNotification;
extern NSString* const AppDelegateCouchRestartedNotification;
View
29 App/AppDelegate.m
@@ -7,8 +7,10 @@
//
#import "AppDelegate.h"
+#import "CouchbaseStartupTest.h"
+NSString* const AppDelegateCouchStartedNotification = @"AppDelegateCouchStarted";
NSString* const AppDelegateCouchRestartedNotification = @"AppDelegateCouchRestarted";
@@ -18,14 +20,18 @@ @interface AppDelegate ()
@implementation AppDelegate
+{
+ BeeTest* _startupTest;
+}
@synthesize window = _window, navController = _navController;
-@synthesize serverURL = _serverURL;
+@synthesize serverURL = _serverURL, startupTest = _startupTest;
- (void)dealloc
{
[_window release];
[_serverURL release];
+ [_startupTest release];
[super dealloc];
}
@@ -48,6 +54,9 @@ - (BOOL)application:(UIApplication *)application
cb.iniFilePath = iniPath;
*/
+ _startupTest = [[CouchbaseStartupTest alloc] init];
+ _startupTest.running = YES;
+
// Now tell the database to start:
if (![cb start]) {
[self couchbaseMobile:cb failedToStart:cb.error];
@@ -59,15 +68,17 @@ - (BOOL)application:(UIApplication *)application
-(void)couchbaseMobile:(CouchbaseMobile*)couchbase didStart:(NSURL*)serverURL
{
- //gCouchLogLevel = 1;
- //gRESTLogLevel = kRESTLogRequestURLs;
-
- if (!self.serverURL)
+ gCouchLogLevel = 1;
+ gRESTLogLevel = kRESTLogRequestURLs;
+ NSString* notName;
+ if (!self.serverURL) {
self.serverURL = serverURL;
- else
- [[NSNotificationCenter defaultCenter]
- postNotificationName: AppDelegateCouchRestartedNotification
- object: self];
+ _startupTest.running = NO;
+ notName = AppDelegateCouchStartedNotification;
+ } else {
+ notName = AppDelegateCouchRestartedNotification;
+ }
+ [[NSNotificationCenter defaultCenter] postNotificationName: notName object: self];
}
-(void)couchbaseMobile:(CouchbaseMobile*)couchbase failedToStart:(NSError*)error
View
5 App/SavedTestRun.h
@@ -13,11 +13,16 @@
@interface SavedTestRun : CouchModel
+ (SavedTestRun*) forTest: (BeeTest*)test;
+
++ (NSString*) serverVersion;
++ (NSUInteger) savedTestCount;
+ (BOOL) uploadAllTo: (NSURL*)upstreamURL error: (NSError**)outError;
@property (copy) NSDictionary* device;
+@property (copy) NSString* serverVersion;
@property (copy) NSString* testName;
@property (retain) NSDate* startTime, *endTime;
+@property NSTimeInterval duration;
@property BOOL stoppedByUser;
@property (copy) NSString* status;
@property (copy) NSString* error;
View
44 App/SavedTestRun.m
@@ -13,11 +13,19 @@
@implementation SavedTestRun
+
CouchDatabase* sDatabase;
+NSString* sVersion;
+NSUInteger sCount;
+
+
++ (NSURL*) serverURL {
+ return ((AppDelegate*)[[UIApplication sharedApplication] delegate]).serverURL;
+}
+ (CouchDatabase*) database {
if (!sDatabase) {
- NSURL* serverURL = ((AppDelegate*)[[UIApplication sharedApplication] delegate]).serverURL;
+ NSURL* serverURL = [self serverURL];
NSAssert(serverURL, @"No server URL");
CouchServer* server = [[CouchServer alloc] initWithURL: serverURL];
sDatabase = [[server databaseNamed: @"workerbee-tests"] retain];
@@ -28,11 +36,15 @@ + (CouchDatabase*) database {
if(op.httpStatus != 412)
NSAssert(NO, @"Error creating db: %@", op.error); // TODO: Real alert
}
+ sCount = [sDatabase getDocumentCount];
+ sVersion = [[server getVersion: NULL] copy];
+
}
return sDatabase;
}
-@dynamic device, testName, startTime, endTime, stoppedByUser, status, error, log;
+@dynamic device, serverVersion, testName, startTime, endTime, duration,
+ stoppedByUser, status, error, log;
- (void) recordTest: (BeeTest*)test {
UIDevice* deviceInfo = [UIDevice currentDevice];
@@ -44,9 +56,11 @@ - (void) recordTest: (BeeTest*)test {
[NSNumber numberWithInt: deviceInfo.batteryState], @"batteryState",
[NSNumber numberWithFloat: deviceInfo.batteryLevel], @"batteryLevel",
nil];
+ self.serverVersion = sVersion;
self.testName = [[test class] testName];
self.startTime = test.startTime;
self.endTime = test.endTime;
+ self.duration = [test.endTime timeIntervalSinceDate: test.startTime];
if (test.stoppedByUser)
self.stoppedByUser = YES;
self.status = test.status;
@@ -57,22 +71,40 @@ - (void) recordTest: (BeeTest*)test {
+ (SavedTestRun*) forTest: (BeeTest*)test {
SavedTestRun* instance = [[self alloc] initWithNewDocumentInDatabase: [self database]];
[instance recordTest: test];
+ ++sCount;
return [instance autorelease];
}
++ (NSString*) serverVersion {
+ return sVersion;
+}
+
++ (NSUInteger) savedTestCount {
+ if (!sDatabase && [self serverURL])
+ [self database]; // trigger connection
+ return sCount;
+}
+
+ (BOOL) uploadAllTo: (NSURL*)upstreamURL error: (NSError**)outError {
CouchReplication* repl = [[self database] pushToDatabaseAtURL: upstreamURL options: 0];
- RESTOperation* op = [repl start];
- if (![op wait]) {
- if (outError) *outError = op.error;
- return NO;
+ while (repl.running) {
+ NSLog(@"Waiting for replication to finish...");
+ [[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode
+ beforeDate: [NSDate distantFuture]];
}
+
+ *outError = repl.error;
+ NSLog(@"...Replication finished. Error = %@", repl.error);
+ if (*outError)
+ return NO;
+
// After a successful push, delete the database because we don't need to keep the test
// results around anymore. (Just deleting the documents would leave tombstones behind,
// which would propagate to the server on the next push and delete them there too. Bad.)
[[sDatabase DELETE] wait];
[sDatabase release];
sDatabase = nil;
+ sCount = 0;
return YES;
}
View
9 App/TestListController.h
@@ -9,9 +9,16 @@
#import <UIKit/UIKit.h>
@class BeeTest;
-@interface TestListController : UITableViewController
+@interface TestListController : UIViewController <UITableViewDataSource, UITableViewDelegate>
+
+@property(nonatomic, retain) IBOutlet UITableView *tableView;
+@property(nonatomic, retain) IBOutlet UILabel *savedRunCountLabel;
+@property(nonatomic, retain) IBOutlet UIButton *uploadButton;
+
+- (IBAction) uploadSavedRuns:(id)sender;
@property (readonly) NSArray* testList;
+
- (BeeTest*) testForClass: (Class)testClass;
- (BeeTest*) makeTestForClass: (Class)testClass;
View
83 App/TestListController.m
@@ -7,8 +7,18 @@
//
#import "TestListController.h"
+#import "AppDelegate.h"
#import "BeeTest.h"
#import "BeeTestController.h"
+#import "SavedTestRun.h"
+
+
+static NSString* const kUpstreamSavedTestDatabaseURL = @"http://snej.iriscouch.com/workerbee-tests";
+
+
+@interface TestListController ()
+- (void) updateSavedTestUI;
+@end
@implementation TestListController
@@ -26,15 +36,8 @@ + (void) initialize {
}
}
-@synthesize testList = _testList;
-
-- (id)initWithStyle:(UITableViewStyle)style
-{
- self = [super initWithStyle:style];
- if (self) {
- }
- return self;
-}
+@synthesize testList = _testList, tableView = _tableView,
+ savedRunCountLabel = _savedRunCountLabel, uploadButton = _uploadButton;
- (void)dealloc {
[_testList release];
@@ -67,7 +70,14 @@ - (void)viewDidLoad
[backItem release];
[self.tableView setBackgroundView:nil];
- [self.tableView setBackgroundColor:kBGColor];
+ [self.tableView setBackgroundColor: [UIColor clearColor]];
+ [self.view setBackgroundColor:kBGColor];
+
+ [_savedRunCountLabel setHidden: YES];
+ [_uploadButton setHidden: YES];
+ [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(serverStarted)
+ name: AppDelegateCouchStartedNotification
+ object: nil];
// Uncomment the following line to preserve selection between presentations.
// self.clearsSelectionOnViewWillAppear = NO;
@@ -86,6 +96,7 @@ - (void)viewDidUnload
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
+ [self updateSavedTestUI];
}
- (void)viewDidAppear:(BOOL)animated
@@ -109,6 +120,32 @@ - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interface
}
+- (void) serverStarted {
+ AppDelegate* appDelegate = (AppDelegate*) [[UIApplication sharedApplication] delegate];
+ [[SavedTestRun forTest: appDelegate.startupTest] save];
+ [self updateSavedTestUI];
+}
+
+
+- (void) updateSavedTestUI {
+ NSString* text;
+ int nSaved = [SavedTestRun savedTestCount];
+ switch (nSaved) {
+ case 0:
+ text = @"no saved test runs";
+ break;
+ case 1:
+ text = @"one saved test run";
+ break;
+ default:
+ text = [NSString stringWithFormat: @"%u saved test runs", nSaved];
+ break;
+ }
+ _savedRunCountLabel.text = text;
+ _savedRunCountLabel.hidden = _uploadButton.hidden = (nSaved == 0);
+}
+
+
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
@@ -181,13 +218,17 @@ - (void) observeValueForKeyPath:(NSString *)keyPath
context:(void *)context
{
if ([object isKindOfClass: [BeeTest class]]) {
+ // Test "running" state changed:
+ BOOL running = [object running];
Class testClass = [object class];
NSUInteger index = [_testList indexOfObjectIdenticalTo: testClass];
NSAssert(index != NSNotFound, @"Can't find %@", object);
NSIndexPath* path = [NSIndexPath indexPathForRow: index inSection: 0];
UITableViewCell* cell = [self.tableView cellForRowAtIndexPath: path];
UISwitch* sw = (UISwitch*)cell.accessoryView;
- [sw setOn: [object running] animated: YES];
+ [sw setOn: running animated: YES];
+ if (!running)
+ [self updateSavedTestUI];
}
}
@@ -201,4 +242,24 @@ - (IBAction) startStopTest:(id)sender {
test.running = running;
}
+- (IBAction) uploadSavedRuns:(id)sender {
+ NSURL* url = [NSURL URLWithString: kUpstreamSavedTestDatabaseURL];
+ NSError* error;
+ if ([SavedTestRun uploadAllTo: url error: &error])
+ [self updateSavedTestUI];
+ else {
+ NSLog(@"ERROR: Upload failed: %@", error);
+ NSString* message = [NSString stringWithFormat: @"Couldn't upload saved test results: %@."
+ "\n\nPlease try again later.",
+ error.localizedDescription];
+ UIAlertView* alert = [[UIAlertView alloc] initWithTitle: @"Upload Failed"
+ message: message
+ delegate: nil
+ cancelButtonTitle: @"Sorry"
+ otherButtonTitles: nil];
+ [alert show];
+ [alert release];
+ }
+}
+
@end
View
227 App/TestListController.xib
@@ -11,8 +11,11 @@
<string key="NS.object.0">933</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
- <string>IBProxyObject</string>
<string>IBUITableView</string>
+ <string>IBUIButton</string>
+ <string>IBUIView</string>
+ <string>IBUILabel</string>
+ <string>IBProxyObject</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
@@ -30,54 +33,175 @@
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
- <object class="IBUITableView" id="873029372">
+ <object class="IBUIView" id="579711411">
<reference key="NSNextResponder"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{0, 20}, {320, 460}}</string>
+ <int key="NSvFlags">292</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="IBUITableView" id="876435166">
+ <reference key="NSNextResponder" ref="579711411"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrame">{{0, 64}, {320, 369}}</string>
+ <reference key="NSSuperview" ref="579711411"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="984153781"/>
+ <string key="NSReuseIdentifierKey">_NS:418</string>
+ <object class="NSColor" key="IBUIBackgroundColor" id="464602712">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ </object>
+ <bool key="IBUIClipsSubviews">YES</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIAlwaysBounceVertical">YES</bool>
+ <int key="IBUISeparatorStyle">1</int>
+ <int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
+ <bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
+ <float key="IBUIRowHeight">44</float>
+ <float key="IBUISectionHeaderHeight">22</float>
+ <float key="IBUISectionFooterHeight">22</float>
+ </object>
+ <object class="IBUIButton" id="984153781">
+ <reference key="NSNextResponder" ref="579711411"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{55, 445}, {66, 24}}</string>
+ <reference key="NSSuperview" ref="579711411"/>
+ <reference key="NSWindow"/>
+ <string key="NSReuseIdentifierKey">_NS:225</string>
+ <bool key="IBUIOpaque">NO</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <int key="IBUIContentHorizontalAlignment">0</int>
+ <int key="IBUIContentVerticalAlignment">0</int>
+ <int key="IBUIButtonType">1</int>
+ <string key="IBUINormalTitle">Upload</string>
+ <reference key="IBUIHighlightedTitleColor" ref="464602712"/>
+ <object class="NSColor" key="IBUINormalTitleColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
+ </object>
+ <object class="NSColor" key="IBUINormalTitleShadowColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC41AA</bytes>
+ </object>
+ <object class="IBUIFontDescription" key="IBUIFontDescription">
+ <int key="type">2</int>
+ <double key="pointSize">15</double>
+ </object>
+ <object class="NSFont" key="IBUIFont">
+ <string key="NSName">Helvetica-Bold</string>
+ <double key="NSSize">15</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ </object>
+ <object class="IBUILabel" id="714361148">
+ <reference key="NSNextResponder" ref="579711411"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{126, 446}, {140, 21}}</string>
+ <reference key="NSSuperview" ref="579711411"/>
+ <reference key="NSWindow"/>
+ <string key="NSReuseIdentifierKey">_NS:328</string>
+ <bool key="IBUIOpaque">NO</bool>
+ <bool key="IBUIClipsSubviews">YES</bool>
+ <int key="IBUIContentMode">7</int>
+ <bool key="IBUIUserInteractionEnabled">NO</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <string key="IBUIText">NN saved test runs</string>
+ <object class="NSColor" key="IBUITextColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MCAwIDAAA</bytes>
+ </object>
+ <nil key="IBUIHighlightedColor"/>
+ <int key="IBUIBaselineAdjustment">1</int>
+ <float key="IBUIMinimumFontSize">10</float>
+ <object class="IBUIFontDescription" key="IBUIFontDescription">
+ <int key="type">1</int>
+ <double key="pointSize">15</double>
+ </object>
+ <object class="NSFont" key="IBUIFont">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">15</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ </object>
+ </array>
+ <string key="NSFrameSize">{320, 480}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="876435166"/>
+ <string key="NSReuseIdentifierKey">_NS:196</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
+ <object class="NSColorSpace" key="NSCustomColorSpace">
+ <int key="NSID">2</int>
+ </object>
+ </object>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics">
+ <int key="IBUIStatusBarStyle">1</int>
+ </object>
+ <object class="IBUISimulatedNavigationBarMetrics" key="IBUISimulatedTopBarMetrics">
+ <int key="IBUIBarStyle">2</int>
+ <bool key="IBUIPrompted">NO</bool>
</object>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
- <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <bool key="IBUIBouncesZoom">NO</bool>
- <int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
- <bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
- <float key="IBUIRowHeight">44</float>
- <float key="IBUISectionHeaderHeight">22</float>
- <float key="IBUISectionFooterHeight">22</float>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array class="NSMutableArray" key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">tableView</string>
+ <reference key="source" ref="372490531"/>
+ <reference key="destination" ref="876435166"/>
+ </object>
+ <int key="connectionID">12</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="372490531"/>
- <reference key="destination" ref="873029372"/>
+ <reference key="destination" ref="579711411"/>
+ </object>
+ <int key="connectionID">13</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">uploadButton</string>
+ <reference key="source" ref="372490531"/>
+ <reference key="destination" ref="984153781"/>
</object>
- <int key="connectionID">5</int>
+ <int key="connectionID">16</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">savedRunCountLabel</string>
+ <reference key="source" ref="372490531"/>
+ <reference key="destination" ref="714361148"/>
+ </object>
+ <int key="connectionID">18</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">dataSource</string>
- <reference key="source" ref="873029372"/>
+ <reference key="source" ref="876435166"/>
<reference key="destination" ref="372490531"/>
</object>
- <int key="connectionID">6</int>
+ <int key="connectionID">14</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
- <reference key="source" ref="873029372"/>
+ <reference key="source" ref="876435166"/>
+ <reference key="destination" ref="372490531"/>
+ </object>
+ <int key="connectionID">15</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchEventConnection" key="connection">
+ <string key="label">uploadSavedRuns:</string>
+ <reference key="source" ref="984153781"/>
<reference key="destination" ref="372490531"/>
+ <int key="IBEventType">7</int>
</object>
- <int key="connectionID">7</int>
+ <int key="connectionID">17</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
@@ -100,10 +224,30 @@
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">4</int>
- <reference key="object" ref="873029372"/>
+ <int key="objectID">8</int>
+ <reference key="object" ref="579711411"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="876435166"/>
+ <reference ref="984153781"/>
+ <reference ref="714361148"/>
+ </array>
<reference key="parent" ref="0"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">9</int>
+ <reference key="object" ref="876435166"/>
+ <reference key="parent" ref="579711411"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">10</int>
+ <reference key="object" ref="984153781"/>
+ <reference key="parent" ref="579711411"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">11</int>
+ <reference key="object" ref="714361148"/>
+ <reference key="parent" ref="579711411"/>
+ </object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -111,19 +255,52 @@
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="-2.CustomClassName">UIResponder</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="10.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="11.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="8.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="9.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
- <int key="maxID">7</int>
+ <int key="maxID">18</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">TestListController</string>
- <string key="superclassName">UITableViewController</string>
+ <string key="superclassName">UIViewController</string>
+ <object class="NSMutableDictionary" key="actions">
+ <string key="NS.key.0">uploadSavedRuns:</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <string key="NS.key.0">uploadSavedRuns:</string>
+ <object class="IBActionInfo" key="NS.object.0">
+ <string key="name">uploadSavedRuns:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <dictionary class="NSMutableDictionary" key="outlets">
+ <string key="savedRunCountLabel">UILabel</string>
+ <string key="tableView">UITableView</string>
+ <string key="uploadButton">UIButton</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <object class="IBToOneOutletInfo" key="savedRunCountLabel">
+ <string key="name">savedRunCountLabel</string>
+ <string key="candidateClassName">UILabel</string>
+ </object>
+ <object class="IBToOneOutletInfo" key="tableView">
+ <string key="name">tableView</string>
+ <string key="candidateClassName">UITableView</string>
+ </object>
+ <object class="IBToOneOutletInfo" key="uploadButton">
+ <string key="name">uploadButton</string>
+ <string key="candidateClassName">UIButton</string>
+ </object>
+ </dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/TestListController.h</string>
View
13 Tests/CouchbaseStartupTest.h
@@ -0,0 +1,13 @@
+//
+// CouchbaseStartupTest.h
+// Worker Bee
+//
+// Created by Jens Alfke on 10/11/11.
+// Copyright (c) 2011 Couchbase, Inc. All rights reserved.
+//
+
+#import "BeeTest.h"
+
+@interface CouchbaseStartupTest : BeeTest
+
+@end
View
13 Tests/CouchbaseStartupTest.m
@@ -0,0 +1,13 @@
+//
+// CouchbaseStartupTest.m
+// Worker Bee
+//
+// Created by Jens Alfke on 10/11/11.
+// Copyright (c) 2011 Couchbase, Inc. All rights reserved.
+//
+
+#import "CouchbaseStartupTest.h"
+
+@implementation CouchbaseStartupTest
+
+@end
View
6 Worker Bee.xcodeproj/project.pbxproj
@@ -8,6 +8,7 @@
/* Begin PBXBuildFile section */
270EA1ED1443C1AD0000AEA9 /* SavedTestRun.m in Sources */ = {isa = PBXBuildFile; fileRef = 270EA1EC1443C1AD0000AEA9 /* SavedTestRun.m */; };
+ 27170A4B1444E4020049E6E4 /* CouchbaseStartupTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 27170A4A1444E4020049E6E4 /* CouchbaseStartupTest.m */; };
27A07488143CCDCD0043BEB6 /* BeeCouchTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 27A07487143CCDCD0043BEB6 /* BeeCouchTest.m */; };
27A0748C143CDE6B0043BEB6 /* CreateDocsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 27A0748B143CDE6B0043BEB6 /* CreateDocsTest.m */; };
27A37423143E5E85005A577D /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 27A37421143E5E85005A577D /* Icon.png */; };
@@ -38,6 +39,8 @@
/* Begin PBXFileReference section */
270EA1EB1443C1AD0000AEA9 /* SavedTestRun.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SavedTestRun.h; sourceTree = "<group>"; };
270EA1EC1443C1AD0000AEA9 /* SavedTestRun.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SavedTestRun.m; sourceTree = "<group>"; };
+ 27170A491444E4020049E6E4 /* CouchbaseStartupTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CouchbaseStartupTest.h; sourceTree = "<group>"; };
+ 27170A4A1444E4020049E6E4 /* CouchbaseStartupTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CouchbaseStartupTest.m; sourceTree = "<group>"; };
27A07486143CCDCD0043BEB6 /* BeeCouchTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BeeCouchTest.h; sourceTree = "<group>"; };
27A07487143CCDCD0043BEB6 /* BeeCouchTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BeeCouchTest.m; sourceTree = "<group>"; };
27A0748A143CDE6B0043BEB6 /* CreateDocsTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CreateDocsTest.h; sourceTree = "<group>"; };
@@ -185,6 +188,8 @@
27CB656C143B9EB800EEA1F2 /* CountTest.m */,
27A0748A143CDE6B0043BEB6 /* CreateDocsTest.h */,
27A0748B143CDE6B0043BEB6 /* CreateDocsTest.m */,
+ 27170A491444E4020049E6E4 /* CouchbaseStartupTest.h */,
+ 27170A4A1444E4020049E6E4 /* CouchbaseStartupTest.m */,
);
path = Tests;
sourceTree = "<group>";
@@ -268,6 +273,7 @@
27A07488143CCDCD0043BEB6 /* BeeCouchTest.m in Sources */,
27A0748C143CDE6B0043BEB6 /* CreateDocsTest.m in Sources */,
270EA1ED1443C1AD0000AEA9 /* SavedTestRun.m in Sources */,
+ 27170A4B1444E4020049E6E4 /* CouchbaseStartupTest.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Please sign in to comment.
Something went wrong with that request. Please try again.