On 1/6/18 3:02 PM, Craig Russell wrote:
Moving this thread to dev@whimsical...
On Jan 6, 2018, at 11:46 AM, Sam Ruby <[email protected]> wrote:
On 1/6/18 2:17 PM, Craig Russell wrote:
On Jan 6, 2018, at 10:42 AM, Sam Ruby <[email protected]> wrote:
Infra has their own tools. Feel free to evolve this tool as you wish to match
your requirements.
I believe that the current state is that if all goes well, the board agenda
tool does everything that is needed. If there is a problem, and the board
agenda tool partially did its job, and then the problem is then later fixed,
this can leave things in a half done state.
My adding function that picked up work that Brent used to do has meant that we
have had to do cleanup. This function is only really tested once a month.
Whether this is the last month with problems or not is something we will only
find out after the next board meeting.
I wonder if there is a way to unit test the new functionality in agenda. If the
tricky part is editing committee-info and updating ldap, a function like
ASF::Module.change_pmc_chair(project, chair) that does both
ASF::Committee.change_pmc_chair(project, chair) and ASF::LDAP.bind.
I realize I'm helping design something that I know almost zero about, but
that's what you get with retired people. ;-)
I encourage you to look at the current test suite for the board agenda tool.
While the test you describe above is most emphatically NOT an example of the
first test I would suggest you add, there undoubtedly are quite a number of
simpler tests that could be added.
Running the tests is a matter of:
cd whimsy/www/board/agenda
rake test
pretty close but no. Do I need to upgrade software versions? I'm running OS X
El Capitan 10.11.6.
You shouldn't need to update your OS, but you will need to install the
necessary dependencies. See:
https://github.com/apache/whimsy/blob/master/DEVELOPMENT.md#running-whimsy-applications-car
Hint: all that is needed is to run 'bundle install'. Or better yet,
'bundle update' which will ensure that you are running the latest
compatible version of every dependency.
- Sam Ruby
[MacBook-Pro-9:www/board/agenda] clr% rake test
rm -rf board
A board/board_agenda_2015_01_21.txt
A board/board_agenda_2015_02_18.txt
A board/board_minutes_2015_01_21.txt
Checked out revision 1.
cp ../data/board_agenda_2015_01_21.txt ../data/board_agenda_2015_02_18.txt
../data/board_minutes_2015_01_21.txt board
svn: warning: W150002:
'/Users/clr/apache/git/whimsy/www/board/agenda/test/work/board/board_agenda_2015_01_21.txt'
is already under version control
svn: warning: W150002:
'/Users/clr/apache/git/whimsy/www/board/agenda/test/work/board/board_agenda_2015_02_18.txt'
is already under version control
svn: warning: W150002:
'/Users/clr/apache/git/whimsy/www/board/agenda/test/work/board/board_minutes_2015_01_21.txt'
is already under version control
svn: E200009: Could not add all targets because some targets are already
versioned
svn: E200009: Illegal target for the requested operation
/usr/local/Cellar/ruby/2.3.1/bin/ruby
-I/usr/local/lib/ruby/gems/2.3.0/gems/rspec-support-3.5.0/lib:/usr/local/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.3/lib
/usr/local/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.3/exe/rspec --pattern
spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
/usr/local/Cellar/ruby/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in
`require': cannot load such file -- erubis (LoadError)
from
/usr/local/Cellar/ruby/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in
`require'
from /Users/clr/apache/git/whimsy/www/board/agenda/main.rb:23:in `<top
(required)>'
from
/Users/clr/apache/git/whimsy/www/board/agenda/spec/spec_helper.rb:12:in
`require_relative'
from /Users/clr/apache/git/whimsy/www/board/agenda/spec/spec_helper.rb:12:in
`<top (required)>'
from
/Users/clr/apache/git/whimsy/www/board/agenda/spec/actions_spec.rb:6:in
`require_relative'
from /Users/clr/apache/git/whimsy/www/board/agenda/spec/actions_spec.rb:6:in
`<top (required)>'
from
/usr/local/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.3/lib/rspec/core/configuration.rb:1435:in
`load'
from
/usr/local/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.3/lib/rspec/core/configuration.rb:1435:in
`block in load_spec_files'
from
/usr/local/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.3/lib/rspec/core/configuration.rb:1433:in
`each'
from
/usr/local/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.3/lib/rspec/core/configuration.rb:1433:in
`load_spec_files'
from
/usr/local/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.3/lib/rspec/core/runner.rb:100:in
`setup'
from
/usr/local/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.3/lib/rspec/core/runner.rb:86:in
`run'
from
/usr/local/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.3/lib/rspec/core/runner.rb:71:in
`run'
from
/usr/local/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.3/lib/rspec/core/runner.rb:45:in
`invoke'
from /usr/local/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.3/exe/rspec:4:in
`<main>'
/usr/local/Cellar/ruby/2.3.1/bin/ruby
-I/usr/local/lib/ruby/gems/2.3.0/gems/rspec-support-3.5.0/lib:/usr/local/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.3/lib
/usr/local/lib/ruby/gems/2.3.0/gems/rspec-core-3.5.3/exe/rspec --pattern
spec/\*\*\{,/\*/\*\*\}/\*_spec.rb failed
Note: these tests are hooked up to run after every push to github; so any
failure will result in emails.
The current tests run the range from simple unit tests to tests that run
against a local subversion repository to tests that run against a local web
server to tests that actually run inside a headless browser to test javascript.
There are no current tests which update LDAP. We would have to figure out a
strategy on how to do that. This could be as simple as having ASF::LDAP.bind
change the @ldap instance variable to point to an object that mocks out the add
and modify functions when ASF::LDAP.bind is called in test mode (i.e.,
ENV['RACK_ENV'] == 'test').
But again, I wouldn't start there.
The question is: which YAK do you want to shave first? :-)
Craig
- Sam Ruby
On 1/6/18 12:46 PM, Craig Russell wrote:
On Jan 6, 2018, at 9:14 AM, Sam Ruby <[email protected]> wrote:
On 1/6/18 11:56 AM, Craig Russell wrote:
Hi Sam,
Does this thread belong on dev@whimsical now?
Sure.
The tooling should allow for double checking that --rm does not remove an
active chair. There would have to be a function that given a person, looked at
all that person's PMC membership and made sure that the person is not the chair.
There must be such a function in agenda but I can't find it atm.
ASF::Committee.pmcs.map(&:chair).uniq will return a list of people who should
be in pmc chairs.
ASF.pmc_chairs will return a list of people who are currently in the list.
Subtracting one list from the other will give you either the list of people who
should be added, or should be removed.
You got just a bit ahead of me here. I was going to suggest that removal of pmc chairs
from ldap should be "automatic" when adding pmc chairs.
Then there should be a prompt confirming the removal since the script might be
buggy, or the checked-out version of committee-info is out of date, or other
untoward conditions.
Then I thought that if you run pmc_chairs --rm with no ids, the tool would
suggest entries to remove.
And then I stopped shaving the yak.
Warning: this can become a Yak shaving exercise if you let it. The next step
would be to show these differences and let you act on them. In fact, that
could have a web interface. In fact, that function should be integrated with
https://whimsy.apache.org/roster/group/pmc-chairs ...
Stepping back a bit here. This exercise is to overcome a deficiency in the
agenda adjournment process. So it does not have to be perfect.
I believe that agenda adjournment already does suggest the list of people who
should be removed according to the algorithm above. So I was not planning on
doing any manual removals.
In conclusion, the new tool to manually add to pmc_chairs is probably
sufficient to the task. And I don't know if we want to have the tool manually
remove from pmc_chairs, given the discussion above. If it's useful to infra,
fine, but without really tight controls I doubt its utility.
Craig
Craig
- Sam Ruby
On Jan 6, 2018, at 5:43 AM, Sam Ruby <[email protected]> wrote:
On 1/5/18 11:38 PM, Craig Russell wrote:
ASF.bind { chairs.add(people) }
My bad. Should have been ASF::LDAP.bind.
I've roughed in a script:
https://github.com/apache/whimsy/blob/27e591b9d6350d89bd3c3aca058ff57e7070d342/tools/modify_pmcchairs.rb
- Sam Ruby
Craig L Russell
Secretary, Apache Software Foundation
[email protected] http://db.apache.org/jdo
Craig L Russell
Secretary, Apache Software Foundation
[email protected] http://db.apache.org/jdo
Craig L Russell
Secretary, Apache Software Foundation
[email protected] http://db.apache.org/jdo
Craig L Russell
Secretary, Apache Software Foundation
[email protected] http://db.apache.org/jdo