[PATCH] samba-tool throws error if there is an empty FSMO role

Rowland Penny repenny241155 at gmail.com
Wed May 11 07:01:14 UTC 2016

On 10/05/16 20:10, Rowland Penny wrote:
> On 10/05/16 16:01, Rowland Penny wrote:
>> On 10/05/16 14:18, Andreas Schneider wrote:
>>> On Tuesday, May 10, 2016 11:46:04 AM Rowland Penny wrote:
>>>> On 10/05/16 10:41, Andreas Schneider wrote:
>>>>> On Monday, May 09, 2016 07:04:44 PM Rowland Penny wrote:
>>>>>> On 05/05/16 18:22, Andrew Bartlett wrote:
>>>>>>> On Thu, 2016-05-05 at 15:05 +0100, Rowland Penny wrote:
>>>>>>>> OK, so I re-read all Andrews posts, decided to try to do what he
>>>>>>>> said,
>>>>>>>> set up the testenv and see what happens with the stock fsmo.py.
>>>>>>>> He said:
>>>>>>>> If you run "SELFTEST_TESTENV=fl2000dc:local make testenv"
>>>>>>>> Then you can play in that environment.
>>>>>>>> so I tried that and it wouldn't work, but the error message 
>>>>>>>> told what
>>>>>>>> was wrong, I wasn't in the root dir of the Samba tarball.
>>>>>>>> Moved there and tried again:
>>>>>>>> SELFTEST_TESTENV=fl2000dc:local make testenv
>>>>>>>> and got this:
>>>>>>>> Waf: Leaving directory `/usr/src/samba/samba-4.4.3/bin'
>>>>>>>> 'build' finished successfully (4m12.098s)
>>>>>>>> ERROR: You must use --enable-selftest to enable selftest
>>>>>>>> Makefile:27: recipe for target 'testenv' failed
>>>>>>>> make: *** [testenv] Error 1
>>>>>>>> So from this, I think I will need to do this:
>>>>>>>> Download Samba tarball
>>>>>>>> Unpack tarball
>>>>>>>> cd into directory created
>>>>>>>> run './configure --enable-selftest' along with any other configure
>>>>>>>> options I require
>>>>>>>> make
>>>>>>>> SELFTEST_TESTENV=fl2000dc:local make testenv
>>>>>>>> Is this correct ??
>>>>>>> Pretty much.  I would check out git master instead, as that is 
>>>>>>> what you
>>>>>>> will be patching, and run ./configure.developer rather than 
>>>>>>> ./configure
>>>>>>> --enable-selftest (due to other reported bugs I've not yet dug 
>>>>>>> into,
>>>>>>> and we don't want to get into here), but otherwise, that is 
>>>>>>> correct.
>>>>>>> Thanks!
>>>>>>> Andrew Bartlett
>>>>>> OK, I have tried, but I just don't understand how the tests are 
>>>>>> supposed
>>>>>> to work, it looks like 'selftest.pl' calls various other scripts and
>>>>>> runs a test script that ultimately tests something (in my case,
>>>>>> fsmo.py). writing a script to actually run 'samba-tool fsmo show' 
>>>>>> should
>>>>>> be fairly easy, but the bits in-between are defeating me. it doesn't
>>>>>> help that whilst looking in the various 'selftest' directories, I am
>>>>>> finding perl, python and bash scripts. I can understand the last 
>>>>>> two,
>>>>>> but perl, well this is a foreign language to me and I don't speak 
>>>>>> any
>>>>>> foreign languages :-)
>>>>>> Is there an idiots guide to writing Samba tests ??? The idiot 
>>>>>> being me
>>>>>> :-D
>>>>>> Rowland
>>>>> I gave a talk at SambaXP about selftest last year. It has some 
>>>>> pictures
>>>>> which help to understand it:
>>>>> https://sambaxp.org/archive_data/SambaXP2015-SLIDES/thu/track3/sambaxp2015 
>>>>> -thu-track3-Andreas_Schneider-HowToUseTheSambaSelftestSuite.pdf
>>>> Thanks, I will have a look.
>>>>> Tests are run against a target. A target is e.g.: ad_dc, 
>>>>> fl2008r2dc, ...
>>>>> You can get a list of possible targets doing:
>>>>>     grep "sub setup_" selftest/target/Samba4.pm
>>>>> A test is an executable (shell script, python script, ...) scheduled
>>>>> against a target (fl2008r2dc e.g. is a functional level 2008r2 
>>>>> ad_dc).
>>>>> You schedule a test (executable or script) against a target in
>>>>> source4/selftest/tests.py
>>>>> For test development it is useful to run 'make testenv' (like 
>>>>> explained by
>>>>> Andrew earlier). Using the testenv you can execute the test 
>>>>> (executable or
>>>>> script) directly in the test environment while writing it. It 
>>>>> makes test
>>>>> development easier.
>>>> The problem is that when you run 'make testenv', it seems to run, do
>>>> some testing and then end, am I supposed to then start samba ???
>>> 'make testenv' should give you an xterm. The xterm is a like a shell 
>>> on a
>>> client machine. Samba and everything else is started and set up. The 
>>> xterm
>>> (make sure xterm is installed) will print information of the IP 
>>> address,
>>> username and password you can use ...
>>> If we you want we can have a phone call next week and a session 
>>> where I can
>>> show and explain everything to you ...
>> Is there any way to use something other than xterm ? the computer 
>> isn't running X
>> When I run 'SELFTEST_TESTENV=fl2000dc:local make testenv' I get this 
>> near the end:
>> xterm: Xt error: Can't open display:
>> xterm: DISPLAY is not set
>> teardown_env(fl2000dc:local)
>> samba: EOF on stdin - terminating
>> Rowland
> OK, I have now installed the Mate desktop and the testenv is now 
> working as described, now to get a test script to run 'samba-tool fsmo 
> show' :-)
> Rowland

OK, still struggling here, I have used timecmd.py as a template, but 
what is the mechanism that runs the code inside the test ?

If I run 'samba-tool fsmo show' inside the xterm, it throws an 
exception, but if I create  an 'fsmo.py' based on 'timecmd.py' and run 
it, nothing happens, mind you 'timecmd.py' seems to do nothing either.

If you examine 'timecmd.py', you will find a 'class' and a couple of 
'def's , but there doesn't seem to be anything to run the 'def's. How is 
the code run ????


More information about the samba-technical mailing list