Skip to content

Instantly share code, notes, and snippets.

@kcmoffat
kcmoffat / testGeneratePushId.m
Last active May 6, 2016 19:50
Push ID Generator Test
#import <XCTest/XCTest.h>
#import <Firebase/Firebase.h>
- (void)testGeneratePushId
{
Firebase *ref = [[Firebase alloc] initWithUrl:@"INSERT SOME FIREBASE URL HERE"];
NSMutableSet *set = [NSMutableSet set];
NSMutableArray *pushIds = [NSMutableArray array];
for (int i = 0; i < 100000; i++) {
/**
* Based on https://gist.github.com/mikelehen/3596a30bd69384624c11#file-generate-pushid-js
*
* Fancy ID generator that creates 20-character string identifiers with the following properties:
*
* 1. They're based on timestamp so that they sort *after* any existing ids.
* 2. They contain 72-bits of random data after the timestamp so that IDs won't collide with other clients' IDs.
* 3. They sort *lexicographically* (so the timestamp is converted to characters that will sort properly).
* 4. They're monotonically increasing. Even if you generate more than one in the same timestamp, the
* latter ones will sort after the former ones. We do this by using the previous random bits