# Test basic tenant capability watcher functionality.

start
----
ok

updates
----

upsert ten=10 name=foo service=shared can_admin_unsplit=true
----
ok

upsert ten=11 name=bar data=ready can_admin_unsplit=false
----
ok

updates
----
update: ten=10 name=foo state=add service=shared cap={can_admin_unsplit:true}
update: ten=11 name=bar state=ready service=none cap={default}

flush-state
----
ten=10 name=foo state=add service=shared cap={can_admin_unsplit:true}
ten=11 name=bar state=ready service=none cap={default}

upsert ten=11 can_admin_unsplit=true
----
ok

updates
----
update: ten=11 name= state=add service=none cap={can_admin_unsplit:true}

get-capabilities ten=11
----
ten=11 name= state=add service=none cap={can_admin_unsplit:true}

delete ten=10
----
ok

updates
----
delete: ten=10

get-capabilities ten=10
----
not-found

# No-op update.
delete ten=15
----
ok

updates
----

# Check that the internal state after a few incremental updates corresponds to
# what we'd expect.
flush-state
----
ten=11 name= state=add service=none cap={can_admin_unsplit:true}

upsert ten=15 name=bli service=external can_admin_unsplit=true
----
ok

updates
----
update: ten=15 name=bli state=add service=external cap={can_admin_unsplit:true}

# Ensure only the last update is applied, even when there are multiple updates
# to a single key.
upsert ten=11 name=woo mode=none data=ready can_admin_unsplit=false
----
ok

upsert ten=11 name=waa service=external data=dropping can_admin_unsplit=true
----
ok

delete ten=11
----
ok

updates
----
delete: ten=11

get-capabilities ten=11
----
not-found

flush-state
----
ten=15 name=bli state=add service=external cap={can_admin_unsplit:true}

# Same thing, but this time instead of deleting the key, leave it behind.
delete ten=15
----
ok

upsert ten=15 name=blix can_admin_unsplit=true
----
ok

upsert ten=15 name=blax data=ready can_admin_unsplit=false
----
ok

updates
----
update: ten=15 name=blax state=ready service=none cap={default}

flush-state
----
ten=15 name=blax state=ready service=none cap={default}

get-capabilities ten=15
----
ten=15 name=blax state=ready service=none cap={default}
