Final Cleanup

Ahoy !  First thanks for all the hard work, whether it was squashing bugs, or finding them, or testing to make sure they are gone.  We've done an amazing job of getting things ship shape before we go on our next release voyage.  If you have a github account you can see we've found and closed over 50+ bugs !!!

Recently, I refactored the Test service. The Test Service's purpose is to test all the other services, and I'll be using it for final mop up.

The Test (run by auto-magical-elves) service said the following failed their pyrobotlab/service/{serviceName}.py Python scripts :
Some are valid failures probably due to connectivity to remote database or required key for cloud service, but some should be fixed.  

Below is the list :

CsvConnector
Runtime - I'm gonna start mopping this one up
Database
InMoovHead
ThingSpeak
Motor
Solr
OpenWeatherMap
MultiWii
WebkitSpeechRecognition
ProgramAB
MyoThalmic
Tracking
Esp8266_01
OledSsd1306
DocumentPipeline
Mqtt
Lm75a
BoofCv
OpenCV
I2cMux
Bno055
InMoovHand
NeoPixel
Pingdar
VoiceRss
GoogleCloud
Arduino

Red - Should be fixed
Orange - might be too difficult to provide meaningful virtual tests due to hardware or key requirements

I'm gonna keep Mopp'n !


2017.09.21  Thanks Mats & Moz4r for all the effort.  Lots of great work !

But sometimes work uncovers more work :)

The Test service is definately getting "blocked" before it runs every Python script so I know there are more scripts which need attention.  In addition I tried to find all scripts which are very small in size.  I confirmed quite a few only create the service (auto-generated).  I think working, thorough, well documented, examples are one of the biggest help for noobies.  So if anyone is interested - the following script need "meat" added to their bones ...

Cli.py
Log.py
Wii.py
Arm.py
Ros.py
RasPi.py
Lidar.py
Agent.py
Sweety.py
Picaxe.py
WiiDar.py
Python.py
WiiBot.py
Serial.py
Swing.py
Blender.py
SlamBad.py
Android.py
Twitter.py
Maestro.py
Esp8266.py
Shoutbox.py
IpCamera.py
Plantoid.py
Security.py
Incubator.py
Sprinkler.py
CleverBot.py
OculusDIY.py
InMoovArm.py
HtmlFilter.py
OculusRift.py
InMoovTorso.py
PickToLight.py
TestThrower.py
CsvConnector.py
TesseractOcr.py
XMLConnector.py
MouthControl.py
RSSConnector.py
RobotPlatform.py
RemoteAdapter.py
FileConnector.py
SensorMonitor.py
TextTransform.py
VirtualDevice.py
ChessGameManager.py
_TemplateService.py
BeagleBoardBlack.py
ServoOrchestrator.py
DatabaseConnector.py
EddieControlBoard.py
InverseKinematics.py
ImapEmailConnector.py
InverseKinematics3D.py
AudioFile.py
InMoovGestureCreator.py
OpenNi.py
RemoteAdapterListener.py
AndroidSpeechRecognition.py
MyoThalmic.py
RemoteAdapterHost.py
VoiceRss.py
Chassis.py
MicrosoftSpeech.py
JavaScript.py
GoPro.py
Lex.py
Proxy.py
Speech.py
Piston.py
Node.py
Mail.py
Tutorial.py
Blocks.py
Webcam.py
TarsosDsp.py
JavaFxGui.py
BoofCv.py
Mpr121.py
InMoovEyelids.py
MotorPulse.py
HtmlParser.py
WebGuiClient.py
JMonkeyEngine.py
Rekognition.py
SegmentDisplay.py
SwingGui.py
TestCatcher.py
Tracking2.py
Deeplearning4j.py
SerialRelay.py
MimicSpeech.py
Vision.py
 
We need one of these .. ;)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Mats's picture

OKThe Esp_8266_01 service

OK

The Esp_8266_01 service connects to a webserver in the esp8266, so testing without it is like testing the Arduino service without MRLComm. But I have tested using real hardware and it's worky. So I think it's OK. Refactoring it to use tcp/ip or websockets is still on the TODO list, but not before Manticore.

OledSsd1306 script has been updated to use virtualArduino. Generally speaking all i2c services that only write should be possible to test with virtual Arduino. I also updated the virtualArduino so that it's possible to test also reading.

Lm75a OK.

I2cMux OK

Bno055 OK

Most of them are still missing JUnit tests, so that should also be done. 

 

GroG's picture

Thanks Mats ! Great Work !

Thanks Mats ! Great Work ! ... Moz4r also checked in or modified many scripts.

The Auto-Elf Test came back with this now for python scripts ...

  CsvConnector
  Database
  InMoovHead
  ThingSpeak
  Motor
  Solr
  MultiWii
  WebkitSpeechRecognition
  ProgramAB
  Servo  <- wuh ?
  MyoThalmic
  Tracking
  Esp8266_01
  DocumentPipeline
  Mqtt
  BoofCv
  I2cMux
 
As you mentioned Esp8266_01 is not applicable...  I'll make functionality to easily strip out tests which cannot be run or enhance the Test service with the capability of "mock'ing".  The Test service is still a "work in progress" too.
 
moz4r's picture

Some issues about motor,

Some issues about motor, swingui gui related seem borked.

Tried to change

arduino.motorAttach("m1", 3, 4)

by

motor.setPwrDirPins(3,4)
motor.attachMotorController(arduino)

but not sure..

GroG's picture

Thanks Moz4r .. Nice Mopping

Thanks Moz4r .. Nice Mopping ! ;)

I'll take a peek into it ..

I've also noticed with the Test service .. it tries to release all new services created after a test - which is a good thing.  (it cleans and mops after test...) -  it turns out this process shows us where Services are not cleanly released - and I've noticed an interesting problem of "order" -  I "think" when Serial shuts down and is released before Arduino, the arduino service spends a large amount of time trying to contact serial to release the other services.   

If the serial service is forcably released from an Arduino, I think the arduino should detach all its devices. I'll look into the details.

Together we'll blast these bugs away

kwatters's picture

attach/detach order

If serial is release, it should detach from arduino...

not tell arduino to detach from it..  does this seem more natural?

 

GroG's picture

Absolutely ! If the attach /

Absolutely !

If the attach / detach pattern is followed (which currently it's probably not between Arduino & Serial) - then detaching a serial will naturally notify Arduino of its detaching and both will have an opportunity to "do the right thing" when you pull them apart ..

additionally detach() (no parameters) will detach all other services - this I'm guessing is not currently implemented in either ..

I'll look into it

Mats's picture

Motor service

Hi

This has to do with the Motor service being split into several different services, depending on the type of motordriver. 

So most of the Motor methods have been moved to the AbstractMotor class, and the configuration is in either Motor or MotorDualPwm.

I made a new swing GUI for MotorDualPwm. but it still needs some work. And so does the Motor swing GUI.

 

GroG's picture

Ha ! .. looks like Servo.py

Ha ! .. looks like Servo.py never ever had virtual capability .. I'll add it

I suspect that the reason is failed recently is because - the tests never got that far before .. so we still have Progress !

I'll add virtual capability to it

GroG's picture

Moz4r Power Mopping !

GroG's picture

Servo - testPythonScript - Check !

I wanted to use 

  servo01.setAutoDisable(True)

I had to comment it out - but we can uncomment it when it becomes available ...

GroG's picture

Current List Of Error Service

Current List Of Error Service Scripts - not sure if this is all either as something actually "kills" the tester :)

error list
    PythonProxy
    Motor
    Solr
    MultiWii
    OculusDIY
    Servo
    MyoThalmic
    TestThrower
    Esp8266_01
    OledSsd1306
    DocumentPipeline
    Mqtt
    BoofCv
    DiyServo
    Bno055
    Test
    _TemplateProxy
    GoogleCloud