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

Reply via email to