From 942a3c1e44532a785ae056f50d219ae52e420dc4 Mon Sep 17 00:00:00 2001
From: meejah <meejah@meejah.ca>
Date: Tue, 20 Oct 2015 12:40:55 -0600
Subject: [PATCH] WIP fixups for smoketest for deletes

---
 src/allmydata/test/check_magicfolder_smoke.py | 77 ++++++++++++-------
 1 file changed, 48 insertions(+), 29 deletions(-)

diff --git a/src/allmydata/test/check_magicfolder_smoke.py b/src/allmydata/test/check_magicfolder_smoke.py
index 90963966..52933bf9 100644
--- a/src/allmydata/test/check_magicfolder_smoke.py
+++ b/src/allmydata/test/check_magicfolder_smoke.py
@@ -211,8 +211,8 @@ if True:
 # give storage nodes a chance to connect properly? I'm not entirely
 # sure what's up here, but I get "UnrecoverableFileError" on the
 # first_file upload from Alice "very often" otherwise
-print("waiting a second")
-time.sleep(1)
+print("waiting 3 seconds")
+time.sleep(3)
 
 if True:
     # alice writes a file; bob should get it
@@ -248,12 +248,11 @@ if True:
                 print("  file contents still mismatched")
         time.sleep(1)
 
-# deletes do not yet work
-if False:
-    # bob deletes alice's "first_file"; alice should also delete it
+if True:
+    # alice deletes 'first_file'
     alice_foo = join(data_base, 'alice-magic', 'first_file')
     bob_foo = join(data_base, 'bob-magic', 'first_file')
-    unlink(bob_foo)
+    unlink(alice_foo)
 
     print("Waiting for '%s' to disappear" % (bob_foo,))
     while True:
@@ -262,31 +261,21 @@ if False:
             break
         time.sleep(1)
 
-if True:
-    # re-write 'second_file'
-    alice_foo = join(data_base, 'alice-magic', 'second_file')
-    bob_foo = join(data_base, 'bob-magic', 'second_file')
-    gold_content = "line one\nsecond line\n"
-
-    with open(bob_foo, 'w') as f:
-        f.write(gold_content)
-
-    print("Waiting for:", alice_foo)
+    # XXX this doesn't work; shouldn't a .tmp file appear on bob's side?
+    bob_tmp = bob_foo + '.tmp'
+    print("Waiting for '%s' to appear" % (bob_tmp,))
     while True:
-        if exists(alice_foo):
-            print("  found", alice_foo)
-            with open(alice_foo, 'r') as f:
-                content = f.read()
-                if content == gold_content:
-                    break
-                print("  file contents still mismatched:\n")
+        if exists(bob_tmp):
+            print("  appeared", bob_tmp)
+            break
         time.sleep(1)
 
 if True:
-    # restore 'first_file' but with different contents
-    alice_foo = join(data_base, 'alice-magic', 'first_file')
-    bob_foo = join(data_base, 'bob-magic', 'first_file')
-    gold_content = "see it again for the first time\n"
+    # bob writes new content to 'second_file'; alice should get it
+    # get it.
+    alice_foo = join(data_base, 'alice-magic', 'second_file')
+    bob_foo = join(data_base, 'bob-magic', 'second_file')
+    gold_content = "line one\nsecond line\n"
 
     with open(bob_foo, 'w') as f:
         f.write(gold_content)
@@ -300,10 +289,9 @@ if True:
                 if content == gold_content:
                     break
                 print("  file contents still mismatched:\n")
+                print(content)
         time.sleep(1)
 
-
-
 if True:
     # bob creates a sub-directory and adds a file to it
     alice_dir = join(data_base, 'alice-magic', 'subdir')
@@ -339,6 +327,37 @@ if True:
             break
         time.sleep(0.1)
 
+# XXX restore the file not working (but, unit-tests work; what's wrong with them?)
+# NOTE: only not-works if it's alice restoring the file!
+if True:
+    # restore 'first_file' but with different contents
+    print("re-writing 'first_file'")
+    assert not exists(join(data_base, 'bob-magic', 'first_file'))
+    assert not exists(join(data_base, 'alice-magic', 'first_file'))
+    alice_foo = join(data_base, 'alice-magic', 'first_file')
+    bob_foo = join(data_base, 'bob-magic', 'first_file')
+    if True:
+        # if we don't swap around, it works fine
+        alice_foo, bob_foo = bob_foo, alice_foo
+    gold_content = "see it again for the first time\n"
+
+    with open(bob_foo, 'w') as f:
+        f.write(gold_content)
+
+    print("Waiting for:", alice_foo)
+    while True:
+        if exists(alice_foo):
+            print("  found", alice_foo)
+            with open(alice_foo, 'r') as f:
+                content = f.read()
+                if content == gold_content:
+                    break
+                print("  file contents still mismatched: %d bytes:\n" % (len(content),))
+                print(content)
+        else:
+            print("   {} not there yet".format(alice_foo))
+        time.sleep(1)
+
 # XXX test .backup (delete a file)
 
 # port david's clock.advance stuff
-- 
2.45.2