use ms resolution for deck mod

This commit is contained in:
Damien Elmes 2011-09-14 05:09:42 +09:00
parent bc9f6e6a24
commit fa1b223363
3 changed files with 21 additions and 21 deletions

View file

@ -90,7 +90,7 @@ conf, models, groups, gconf, tags from deck""")
def flush(self, mod=None):
"Flush state to DB, updating mod time."
self.mod = intTime() if mod is None else mod
self.mod = intTime(1000) if mod is None else mod
self.db.execute(
"""update deck set
crt=?, mod=?, scm=?, dty=?, usn=?, ls=?, conf=?""",

View file

@ -20,9 +20,8 @@ def test_create():
deck = Deck(path)
# for open()
newPath = deck.path
deck.save()
newMod = deck.mod
deck.close()
newMod = deck.mod
del deck
def test_open():

View file

@ -41,14 +41,15 @@ def setup_basic(loadDecks=None):
# start with same schema and sync time
deck1.scm = deck2.scm = 0
# and same mod time, so sync does nothing
deck1.save(); deck2.save()
t = intTime(1000)
deck1.save(mod=t); deck2.save(mod=t)
server = LocalServer(deck2)
client = Syncer(deck1, server)
def setup_modified():
setup_basic()
# mark deck1 as changed
deck1.save(mod=intTime()+1)
deck1.save()
@nose.with_setup(setup_basic)
def test_nochange():
@ -85,7 +86,7 @@ def test_sync():
assert client.sync() == "noChanges"
# if we bump mod time, everything is copied across again because of the
# 600 second sync leeway. but the decks should remain the same.
deck1.save(mod=intTime()+2)
deck1.save()
assert client.sync() == "success"
check(2)
@ -97,14 +98,14 @@ def test_models():
cm['name'] = "new"
time.sleep(1)
deck1.models.save(cm)
deck1.save(mod=intTime()+1)
deck1.save()
assert deck2.models.get(cm['id'])['name'] == "Basic"
assert client.sync() == "success"
assert deck2.models.get(cm['id'])['name'] == "new"
# deleting triggers a full sync
deck1.scm = deck2.scm = 0
deck1.models.rem(cm)
deck1.save(mod=intTime()+1)
deck1.save()
assert client.sync() == "fullSync"
@nose.with_setup(setup_modified)
@ -115,14 +116,14 @@ def test_facts():
fact = deck1.getFact(fid)
assert fact['Front'] != "abc"
fact['Front'] = "abc"
fact.flush(mod=intTime()+1)
deck1.save(mod=intTime()+1)
fact.flush()
deck1.save()
assert client.sync() == "success"
assert deck2.getFact(fid)['Front'] == "abc"
# deletions too
assert deck1.db.scalar("select 1 from facts where id = ?", fid)
deck1.remFacts([fid])
deck1.save(mod=intTime()+1)
deck1.save()
assert client.sync() == "success"
assert not deck1.db.scalar("select 1 from facts where id = ?", fid)
assert not deck2.db.scalar("select 1 from facts where id = ?", fid)
@ -137,12 +138,12 @@ def test_cards():
card.startTimer()
deck1.sched.answerCard(card, 4)
assert card.reps == 2
deck1.save(mod=intTime()+1)
deck1.save()
assert deck2.getCard(card.id).reps == 1
assert client.sync() == "success"
assert deck2.getCard(card.id).reps == 2
deck1.remCards([card.id])
deck1.save(mod=intTime()+1)
deck1.save()
assert deck2.db.scalar("select 1 from cards where id = ?", card.id)
assert client.sync() == "success"
assert not deck2.db.scalar("select 1 from cards where id = ?", card.id)
@ -154,8 +155,8 @@ def test_tags():
deck1.tags.register(["abc"])
deck2.tags.register(["xyz"])
assert deck1.tags.all() != deck2.tags.all()
deck1.save(mod=intTime()+1)
deck2.save(mod=intTime()+2)
deck1.save()
deck2.save()
assert client.sync() == "success"
assert deck1.tags.all() == deck2.tags.all()
@ -168,8 +169,8 @@ def test_groups():
assert len(deck1.groups.all()) != len(deck2.groups.all())
time.sleep(0.1)
deck2.groups.id("new2")
deck1.save(mod=intTime()+1)
deck2.save(mod=intTime()+2)
deck1.save()
deck2.save()
assert client.sync() == "success"
assert deck1.tags.all() == deck2.tags.all()
assert len(deck1.groups.all()) == len(deck2.groups.all())
@ -177,7 +178,7 @@ def test_groups():
assert deck1.groups.conf(1)['maxTaken'] == 60
deck2.groups.conf(1)['maxTaken'] = 30
deck2.groups.save(deck2.groups.conf(1))
deck2.save(mod=intTime()+2)
deck2.save()
assert client.sync() == "success"
assert deck1.groups.conf(1)['maxTaken'] == 30
@ -186,14 +187,14 @@ def test_conf():
test_sync()
assert deck2.conf['topGroup'] == 1
deck1.conf['topGroup'] = 2
deck1.save(mod=intTime()+2)
deck1.save()
assert client.sync() == "success"
assert deck2.conf['topGroup'] == 2
@nose.with_setup(setup_modified)
def test_threeway():
test_sync()
deck1.close()
deck1.close(save=False)
d3path = deck1.path.replace(".anki", "2.anki")
shutil.copy2(deck1.path, d3path)
deck1.reopen()
@ -223,7 +224,7 @@ def _test_speed():
setup_basic([os.path.expanduser("~/rapid.anki"),
os.path.expanduser("~/rapid2.anki")])
print "load %d" % ((time.time() - t)*1000); t = time.time()
deck2.save(mod=intTime()+1)
deck2.save()
# 3000 revlog entries: ~128ms
# 3000 cards: ~200ms
# 3000 facts: ~500ms