+
Skip to content
This repository was archived by the owner on Aug 14, 2019. It is now read-only.

Conversation

philipcmonk
Copy link
Contributor

A lot happening here. I've sent out a usage document, which should probably become public documentation at some point.

Main changes:

  • Aquarium created
  • pH created
  • Clay queues incoming changes so that no more than one change happens in a single event
  • Various small sequencing changes in vanes, to improve robustness
  • Clay stores the rift number that we had for the foreign ship with its desks. We should use this information for individual breaches, but this doesn't attempt to solve that.

Copy link
Contributor

@joemfb joemfb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor cleanup request:

@joemfb
Copy link
Contributor

joemfb commented Mar 26, 2019

@philipcmonk, how long do some of these basic tests task? It'd be nice to wire something up for CI, as an example for future testing efforts if nothing else.

@philipcmonk
Copy link
Contributor Author

Haven't timed it, but something like 5-10 minutes on my machine. It's significantly faster if you don't start collections, acme, dns, and hall. If it's easy to wire up to CI, I'd say we should do it. CI is changing in cc-release, so we also could just hook it up to CI there.

:_ this(subscribed =(command %subscribe))
(aqua-vane-control-handler our ost subscribed command)
::
++ diff-aqua-effects

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A little comment explaining that this ignores effects other than %restore or %send might be helpful.

^+ ..abet-pe
=. this
%- emit-aqua-events
[%event who [//behn/0v1n.2m9vh %born ~]]~

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this need to be the same /0v1n.2m9vh as in the ames handler? Maybe that constant should be split off into sur/aquarium/hoon.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That value is u3A->sen, the "instance number" in vere. It's set to (scot %uv (mug now)) on boot/restart. I think the idea is to ensure there's a new duct corresponding to the new process, but it's not used for effect routing (or for injecting %wake events). I don't think it's needed here. It might not be needed at all, but that's a larger conversation.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just cargo-culted that. The right answer is probably for aqua to keep track of that, change it on restart, and insert it into each of these wire as necessary. For now, I've just copied the same string everywhere.

pil=pill
assembled=*
tym=@da
fleet-snaps=(map term (map ship pier))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do :fleet-snaps and :piers refer to the same ships? If so, it might be cleaner to have :fleet-snaps be just a (map term (set ship)) so there's less risk of the two getting out of sync.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fleet-snaps is a set of snapshots of the state of the ships. It's intended to freeze a fleet so you can restore back to that point later on. This is how pH can cache e.g. "start ~bud" so that you only have to do it once rather than once per test.

Copy link

@belisarius222 belisarius222 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had some minor comments, but other than the eth-manage address change, I approve this for merging.

@@ -0,0 +1,96 @@
::
:: Traditionally, ovo refers an event or card, and ova refers to a list

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ovo refers to an event

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're both wrong: ovo is the conventional name for an +ovum, which is (pair wire card). An "event" is (pair @da ovum).

:: ~? !=(20 suy) [%ap-fill-add [[our dap] q.q.pry ost] +(suy)]
[%& +(qel.ged (~(put by qel.ged) ost +(suy)))]
=/ subscriber-ship p:(~(got by sup.ged) ost)
?: &(=(20 suy) !=(our subscriber-ship))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, looks like you turned off the culling if our own ship is the one subscribed. Does that still work for web stuff?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried a bunch of stuff to reduce the number of subscription updates in the queues between aqua/ph and aqua-*, and I couldn't come up with anything that would work reliably.

I'm not sure how web stuff uses this? Is that the only way we clean up subscriptions created by web pages?

@joemfb
Copy link
Contributor

joemfb commented Mar 28, 2019

@philipcmonk, i think it's worth adding to CI. It's not particularly complicated to add now, and then re-add once arvo/next converges with vere/cc-release. Duplicating the |mass implementation (here: https://github.com/urbit/arvo/blob/next/.travis/test.js#L77) gets you most of the way, you just need to scrape for an error condition (a la https://github.com/urbit/runner-js/blob/master/lib/actions.js#L26). I can help if runner-js gives you trouble.

@philipcmonk
Copy link
Contributor Author

Added it to CI. Now CI takes ~25 minutes. Looks like the old builds took between 8 and 17 minutes (not sure what causes them to be longer; maybe changes to /sys?).

@ohAitch
Copy link
Contributor

ohAitch commented Mar 30, 2019 via email

@ohAitch
Copy link
Contributor

ohAitch commented Mar 30, 2019

Also, would it be possible to add custom folds for individual test phases showing more granular timings? Even 8 minutes is rather a lot.

(5 of those is the actual test script, 8 in the pill case; it looks like we're maybe building the pill twice??)

@joemfb
Copy link
Contributor

joemfb commented Mar 30, 2019

@ohAitch, we have to build a second pill to correctly capture userspace changes (which are now stored in the pill).

I think the right approach is to a) split the different test types across different CI jobs and b) cache and promote build artifacts more efficiently. The right place will be on top of cc-release, which now uses nix and make as the build system, and urb.py as the test runner. The right time will be when somebody is free to work on it.

@ohAitch
Copy link
Contributor

ohAitch commented Mar 30, 2019 via email

@joemfb
Copy link
Contributor

joemfb commented Mar 30, 2019

It's still only built on changes to sys, but when it's built it's build twice twice: first to stage the kernel changes, second to make the complete up-to-date pill that will be uploaded. This is of course stupid and inefficient, but was the easiest way to make the new pills not wrong. My grand plan is to let the pain of these slow builds increase until someone (maybe me!) snaps and makes it fast.

@ohAitch
Copy link
Contributor

ohAitch commented Mar 30, 2019 via email

@philipcmonk philipcmonk merged commit 84e9837 into next Apr 1, 2019
@ixv ixv mentioned this pull request Apr 3, 2019
@ixv ixv mentioned this pull request Apr 12, 2019
@jtobin jtobin deleted the philip/aquarium branch April 30, 2019 01:38
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载