]>
Commit | Line | Data |
---|---|---|
5c19dc3a A |
1 | /* |
2 | * Copyright (c) 2015 Apple Inc. All Rights Reserved. | |
3 | * | |
4 | * @APPLE_LICENSE_HEADER_START@ | |
5 | * | |
6 | * This file contains Original Code and/or Modifications of Original Code | |
7 | * as defined in and that are subject to the Apple Public Source License | |
8 | * Version 2.0 (the 'License'). You may not use this file except in | |
9 | * compliance with the License. Please obtain a copy of the License at | |
10 | * http://www.opensource.apple.com/apsl/ and read it before using this | |
11 | * file. | |
12 | * | |
13 | * The Original Code and all software distributed under the License are | |
14 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER | |
15 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, | |
16 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, | |
17 | * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. | |
18 | * Please see the License for the specific language governing rights and | |
19 | * limitations under the License. | |
20 | * | |
21 | * @APPLE_LICENSE_HEADER_END@ | |
22 | */ | |
23 | ||
24 | ||
25 | #include <SOSCircle/Regressions/SOSTestDevice.h> | |
26 | #include "secd_regressions.h" | |
27 | #include "SecdTestKeychainUtilities.h" | |
28 | ||
e0e0d90e | 29 | static int kTestTestCount = 646; |
5c19dc3a A |
30 | |
31 | // Add 1000 items on each device. Then delete 1000 items on each device. | |
32 | static void beer_servers(void) { | |
33 | __block int iteration=0; | |
34 | __block int objectix=0; | |
35 | __block CFMutableArrayRef objectNames = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks); | |
36 | const size_t itemDataSize = 1024; | |
37 | const int peerCount = 4; | |
38 | const int edgeCount = peerCount * (peerCount - 1); | |
39 | const int itemsPerPeer = 1000; | |
40 | const int itemsPerIteration = 100; | |
41 | const int itemChunkCount = (itemsPerPeer / itemsPerIteration); | |
42 | const int deleteIteration = edgeCount * (itemChunkCount + 30); | |
43 | const int idleIteration = 616; //deleteIteration + edgeCount * (itemChunkCount + 10); | |
44 | ||
45 | CFMutableDataRef itemData = CFDataCreateMutable(kCFAllocatorDefault, itemDataSize); | |
46 | CFDataSetLength(itemData, itemDataSize); | |
47 | SOSTestDeviceListTestSync("beer_servers", test_directive, test_reason, 0, false, ^bool(SOSTestDeviceRef source, SOSTestDeviceRef dest) { | |
48 | bool result = false; | |
49 | if (iteration <= edgeCount * itemChunkCount) { | |
50 | if (iteration % (peerCount - 1) == 0) { | |
51 | for (int j = 0; j < itemsPerIteration; ++j) { | |
52 | CFStringRef name = CFStringCreateWithFormat(NULL, NULL, CFSTR("%@-pre-%d"), SOSTestDeviceGetID(source), objectix++); | |
53 | CFArrayAppendValue(objectNames, name); | |
54 | SOSTestDeviceAddGenericItemWithData(source, name, name, itemData); | |
55 | CFReleaseNull(name); | |
56 | } | |
57 | } | |
58 | result = true; | |
59 | } else if (iteration == deleteIteration) { | |
60 | //diag("deletion starting"); | |
61 | } else if (deleteIteration < iteration && iteration <= deleteIteration + edgeCount * itemChunkCount) { | |
62 | if (iteration % (peerCount - 1) == 0) { | |
63 | for (int j = 0; j < itemsPerIteration; ++j) { | |
64 | CFStringRef name = CFArrayGetValueAtIndex(objectNames, --objectix); | |
65 | SOSTestDeviceAddGenericItemTombstone(source, name, name); | |
66 | } | |
67 | result = true; | |
68 | } | |
69 | } else if (idleIteration == iteration) { | |
70 | //diag("idle starting"); | |
71 | } else if (617 == iteration) { | |
72 | //diag("interesting"); | |
73 | } | |
74 | iteration++; | |
75 | return result || iteration < deleteIteration; | |
76 | }, ^bool(SOSTestDeviceRef source, SOSTestDeviceRef dest, SOSMessageRef message) { | |
77 | return false; | |
78 | }, CFSTR("becks"), CFSTR("corona"), CFSTR("heineken"), CFSTR("spaten"), NULL); | |
79 | CFRelease(objectNames); | |
80 | CFRelease(itemData); | |
81 | } | |
82 | ||
83 | int secd_74_engine_beer_servers(int argc, char *const *argv) | |
84 | { | |
85 | plan_tests(kTestTestCount); | |
86 | ||
87 | /* custom keychain dir */ | |
88 | secd_test_setup_temp_keychain(__FUNCTION__, NULL); | |
89 | ||
90 | beer_servers(); | |
91 | ||
92 | return 0; | |
93 | } |