This repository has been archived by the owner on Mar 9, 2022. It is now read-only.
/
Test9_LoadDB.m
102 lines (84 loc) · 2.87 KB
/
Test9_LoadDB.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
//
// PerfTestScenario9.m
// Worker Bee
//
// Created by Ashvinder Singh on 2/14/14.
// Copyright (c) 2014 Couchbase, Inc. All rights reserved.
//
#import "Test9_LoadDB.h"
#import <malloc/malloc.h>
#import <CouchbaseLite/CouchbaseLite.h>
@implementation Test9_LoadDB
{
CBLManager* _mymanager;
CBLDatabase* _database;
BOOL _createdDatabase;
}
- (CBLDatabase*) mydatabase {
if (!_createdDatabase) {
_createdDatabase = YES;
NSError* error = nil;
CBLDatabase* database = [self.testmanager existingDatabaseNamed: self.dbname error: NULL];
if (database) {
_database = database;
}
_database = [_mymanager databaseNamed: self.dbname error: &error];
}
CBLDatabase* database = [self.testmanager existingDatabaseNamed: self.dbname error: NULL];
if (database) {
_database = database;
}
return _database;
}
- (CBLManager*) testmanager {
if (!_mymanager) {
_mymanager = [[CBLManager alloc] init];
}
return _mymanager;
}
- (double) runOne:(int)kNumberOfDocuments sizeOfDocuments:(int)kSizeofDocument {
@autoreleasepool {
self.dbname = [[NSString alloc] init];
self.dbname = @"test9";
NSMutableData* utf8 = [NSMutableData dataWithLength: kSizeofDocument];
memset(utf8.mutableBytes, '1', utf8.length);
NSString* str = [[NSString alloc] initWithData: utf8 encoding: NSUTF8StringEncoding];
NSDictionary* props = @{@"k": str};
[self.mydatabase inTransaction:^BOOL{
for (int j = 0; j < kNumberOfDocuments; j++) {
@autoreleasepool {
CBLDocument* doc = [self.mydatabase createDocument];
NSError* error;
if (![doc putProperties: props error: &error]) {
[self logFormat: @"!!! Failed to create doc %@", props];
self.error = error;
}
}
}
return YES;
}];
}
@autoreleasepool {
NSDate *start = [NSDate date];
// Shutdown database
[self.mymanager close];
self.mymanager = nil;
//NSDate *start2 = [NSDate date];
// Recreate database
CBLDatabase* db = [self mydatabase];
if (!db) {
[self logFormat:@"Error database not found"];
}
NSDate *methodFinish = [NSDate date];
//NSTimeInterval shutdownTime = [start2 timeIntervalSinceDate:start] * 1000;
//NSTimeInterval recreateTime = [methodFinish timeIntervalSinceDate:start2] * 1000;
//[self logFormat: @"Shutdown %.02f, recreate %.02f ", shutdownTime,recreateTime];
NSTimeInterval executionTime = [methodFinish timeIntervalSinceDate:start] * 1000;
return executionTime;
}
}
- (void) setUp {
[super setUp];
self.heartbeatInterval = 1.0;
}
@end