From openSIPS

Community: IRCmeeting20150225

Community -> PublicMeetings -> 25th of February 2015

When

Topics

Help with testing OpenSIPS 2.1

The new OpenSIPS 2.1 version comes not only with a new name, but also with a lot of enhancements: a new transport interface, async I/O support, data partitioning and message compression are just some of the new features that will be released with this version. And others will follow, you can find a preliminary list here.

While new features are added to the project, more testing work is required. Even though we are doing extensive tests on our own, our scenarios are limited and can't cover a lot of use cases. That's where we need the community's help: to test as many scenarios as possible, in order to detect bugs from scratch and be able to fix them before the release.

That's how this public discussion's topic came out: Testing OpenSIPS 2.1. During this session we would like you to help us answer the following questions:

People can assist with testing 2.1 with whatever crazy scenarios they have - OpenSIPS team can assist with migration info, troubleshooting and fixing. The goal is to catch and kill as many bugs as possible before the stable release - And we believe this is something that we can all take advantage of.


Conclusions


IRC Logs

16:59 <     razvanc>| great, thanks lirakis 
16:59 <     razvanc>| So today's meeting is about OpenSIPS 2.1 testing
17:00 <     razvanc>| therea are some ideas written down here: http://www.opensips.org/Community/IRCmeeting20150225
17:00 <     razvanc>| The new OpenSIPS 2.1 will come wit _a lot_ of new changes and enhancements
17:00 <     razvanc>| and we all want this release to be as stable as possible
17:01            --- | bogdan_vs has changed the topic to: IRC Metting - Help on testing 2.1
17:01 <     razvanc>| although we are doing some extensive tests on our own
17:01 <     razvanc>| our scenarios are limited
17:01 <     razvanc>| that's where we really need your help
17:02 <     lirakis>| i mean ... i just created a new digital ocean VM dedicated to running opensips 2.1 and testing all this stuff
17:02 <     lirakis>| thats the best thing i can think of to help test
17:02 <     razvanc>| that's a wonderful start :)
17:02 <     razvanc>| thanks
17:03 <     lirakis>| as far as "engaging the community" ... im not sure exactly what we can do
17:03 <     razvanc>| and what platform are you running out there
17:03 <    lirakis> | razvanc, centos7
17:03 <     razvanc>| no, I'm asking if you have a limited set of functions
17:03 <     razvanc>| or your whole platform, ported to 2.1
17:03 <     lirakis>| yes its a fresh clean install of 2.1
17:04 <     lirakis>| im building an entirely new system on it
17:04 <     razvanc>| cool, with everything you have in production?
17:04 <     lirakis>| i will be replicating my existing 1.10 install on this, plus adding features
17:04 <     razvanc>| that's great
17:04 <    Samael28>| As I understood, 2.1 is not back-compatible with 1.x And yet, not ready for production. A can try to implement my project on 2.1 on test server.
17:04 <     lirakis>| moving to rtpengine, as well as adding tcp, ipv6, and ws when they are merged to master
17:05 <     razvanc>| Samael28: no, it is not fully back-compatible
17:05 <     razvanc>| although the changes are minor
17:05 <     razvanc>| only the new stuff need something different
17:05 <     razvanc>| like the asynchronous operations
17:06 <       wikki>| I'm running into an issue where the get_source_group() seems to be failing for some ip addresses, they are in the table, and I see them if I do an address dump.  The strange thing is that it seems to fail once, then goes through.  Not sure how to really troubleshoot this
17:06 <    Samael28>| Yep, async is something I need to read about more carefully
17:06 <     lirakis>| wikki, we are in the middle of a meeting - please wait till we are done
17:06 <       wikki>| NP
17:06 <     lirakis>| so ... as far as engagingt he community, i dont know if there is a way to provide people with an environment to run 2.1 in
17:07 <     lirakis>| like ... give out small virtual machines temporarily or some thing
17:07 <     lirakis>| not sure how feasible some thing like that is
17:07 <     razvanc>| Samael28: what we really want is for them to port their scripts to the new 2.1
17:07 <     razvanc>| and run as many as different scenarios possible
17:07 <     lirakis>| certainly i think ...publishing a lot on the website about it
17:08 <     lirakis>| trying to get people aware that .... there is a serious need for them to "try it" ... port their existing configs to it etc.
17:08 <     razvanc>| yes
17:08 <     razvanc>| that's exactly what we need
17:08 <    Samael28>| So... What is a plan of testing? Means you want community to try their scripts on your VM's or on their own and give feedback?
17:08 <     razvanc>| we can assist them with migration info and troubleshooting
17:08 <     lirakis>| i think awareness is a big part of that
17:09 <     lirakis>| i know 2.1 is out b/c im on the mailing lists and irc all the time
17:09 <     razvanc>| Samael28: not really, people should run their scripts, in their environments and give back feedback
17:09 <     lirakis>| there is no "BIG" chunk of the main opensips.org page that jumps out at me talking about 2.1
17:10 <     razvanc>| lirakis: yes, so there's one item on the TODO list :)
17:12 <    Samael28>| Hm.... Question about async idea right away: For ex. I used async and than continiue work with SIP message. When I will called to my_resume_route, in what state would be SIP message, if I change it after async called?
17:12 <     lirakis>| yeah ... outside of awareness, and making the message very clear i dont have any great suggestions for engaging the community
17:12 <      liviuc>| Samael: the async() call stops the script immediately
17:12 <      liviuc>| so no more "continue work with SIP message" :)
17:13 <     razvanc>| lirakis: we should probably write down how we (the developers) can help you do that
17:13 <     razvanc>| for example, write a migration tutorial
17:13 <     lirakis>| Samael28, async does puts the sip message into its own "context" which is sorta frozen and put into waiting till the operation returns.  this is so the process that was handling the message can go back to doing other things
17:13 <     razvanc>| that's definitely something we should do
17:13 <     lirakis>| so ... related to previous meetings
17:13 <     lirakis>| is there any wiki available
17:14 <     lirakis>| that i could contribute to
17:14 <     lirakis>| while doing testing on 2.1
17:14 <     lirakis>| like i am documenting setting up 2.1 with rtpeninge
17:14 <     lirakis>| and it could be a tutorial easily
17:14 <     razvanc>| lirakis: http://www.opensips.org/Documentation/Tutorials
17:14 <     razvanc>| check this out
17:14 <     lirakis>| no i know
17:14 <     lirakis>| but last meeting we talked about the website, and making a more dedicated wiki
17:14 <     razvanc>| you can write a tutorial there
17:15 <     lirakis>| ok
17:15 <     lirakis>| so that is still the place to put stuff
17:15 <     razvanc>| lirakis: indeed, and we are working on that too
17:15 <     razvanc>| but it is not yet completed
17:15 <     lirakis>| ok no problem just curious
17:15 <     razvanc>| prior to that, we need to release OpenSIPS 2.1
17:15 <     lirakis>| yes i know h aha
17:16 <     razvanc>| and we definitely want it to be awesome :)
17:16 <     razvanc>| it will be great if you could document your "experience" with OpenSIPS 2.1 in a wiki page there
17:16 <     razvanc>| you do have write permissions
17:17 <     razvanc>| until the next wiki and blog is done
17:17 <     lirakis>| i will do that
17:17 <     razvanc>| that would be really helpful for others too
17:18 <     razvanc>| so, what else?
17:18 <     razvanc>| How to speed up the "testing", "reporting" and "fixing" cycle?
17:18 <     lirakis>| i mean ... i think reporting issues on git, and making pull requests is about as quick a cycle as we can get
17:19 <     razvanc>| I agree
17:21 <     lirakis>| i ... dont have anything else to add hehe
17:21 <     razvanc>| I was searching through the conversations yesterday
17:21 <     razvanc>| and noticed OliverTynes message, saying that the master branch is not recommended for testing
17:22 < OliverTynes>| I said it crashed at once when I tried it with a medium sized config
17:22 < OliverTynes>| and then bogdan said it should work
17:22 < OliverTynes>| that was that
17:22 <     razvanc>| that he found some crashes
17:22 < OliverTynes>| I am planning to do more involved testing tomorrow actually :)
17:22 <     razvanc>| well, that would be great
17:22 < OliverTynes>| oh sorry, did I just jump into the opensips irc meeting? just saw myself getting hilighted
17:23 <     razvanc>| because even though it is the master code, we don't plan it to crash :)
17:23 <     razvanc>| no worries, you are welcome here :)
17:23 < OliverTynes>| what is keeping a lot of people from properly testing 2.1 in my oppinion
17:23 < OliverTynes>| is that there is very little to gain for us users before we can actually test using WS
17:23 < OliverTynes>| which is the main reason for most people going 1.11 -> 2.1 I am guessing
17:24 <     lirakis>| i disagree with that
17:24 <     lirakis>| i mean ... the whole refactor of tcp + async
17:24 <     lirakis>| well
17:24 <     lirakis>| to be fair
17:24 <     lirakis>| that is not merged
17:24 < OliverTynes>| that is a good thing, dont misunderstand me
17:24 <     lirakis>| so ... i do agree with that
17:24 < OliverTynes>| but the main *feature* of opensips, from a usability point of view, are the websockets, no?
17:24 <     lirakis>| i feel like we wont get much from testing without having the new async network refactor
17:24 < OliverTynes>| most of the async stuff is perfomance improvements and other things going on under the hood
17:24 <     razvanc>| not really
17:25 <     lirakis>| OliverTynes, the WHOLE network subsystem is refactored
17:25 <     lirakis>| and i want to test that
17:25 <     razvanc>| the async operations are already in place in the master branch
17:25 <     lirakis>| but it is not in master yet
17:25              * | OliverTynes has not gone in depth into this other than waiting very excitedly for integrated websocket
17:25 <     lirakis>| bogdan_vs, had mentioned that the merge for that stuff to master might happen this week
17:25 <     lirakis>| i think that until that happens, there will be less testing benefit
17:26 <     lirakis>| b/c without it, 2.1 is "feels like" just new modules + async ops
17:26 <     lirakis>| but with it, 2.1 is a completely new machine
17:26 <     lirakis>| i want to test the "new machine"
17:26 <     lirakis>| and i think the most valuable testing will be against the "complete" new codebase
17:27 <     razvanc>| lirakis: yes, definitely testing makes sense after the merge
17:27 <      liviuc>| some people may enjoy the multiple tables feature of drouting or compression scenarios
17:27 <     razvanc>| because the release will contain both of them
17:27 <     lirakis>| right
17:27 <     razvanc>| and we will do the merge asap
17:27 <      liviuc>| so there are many other reasons for the code to start being tested out
17:28 <     lirakis>| liviuc, right i know there are new modules
17:28 <      liviuc>| imo, besides raising the awareness of the new features (which is a good first step)
17:28 <     lirakis>| but testing against the major refactored stuff is going to be "more valuable" testing"
17:28 <      liviuc>| I would say that a better collection of fresh tutorials would increase the likelihood of newly released code being tested
17:29 <      liviuc>| and advertise them as well on the main page
17:29 <     lirakis>| so .. in general it seems like lots of awareness issues:  awareness of major refactor and need for testing, as well as awareness of nnew features to incentivise people to test
17:29 <     lirakis>| yes - i think ther needs to be a BIG splash section on the front page
17:29 <     lirakis>| not just a little wall of text
17:30 <     razvanc>| sure, we'll do that
17:31 <     razvanc>| as soon as the merge is done
17:31 <     razvanc>| so you can have the whole thing out there
17:32 <     razvanc>| OliverTynes: so you're saying that you're not very eager to test until WS appears
17:32 < OliverTynes>| true and not true
17:32 < OliverTynes>| my main reason to go 2.1 is to get rid of oversip
17:32 < OliverTynes>| but I still need my stuff to be 2.1 compatible, so I might as well test earlier
17:33 < OliverTynes>| but most of my business case rests on websockets, so thats the thing I am most keen to figure out if will work satisfactory
17:33 <     razvanc>| async ops also bring huge pluses in terms of performance
17:33 <     lirakis>| i mean i agree - ws is a big feature, but i think the whole refactored network stuff is a big win
17:33 <     razvanc>| but probably that's not yout focus right now
17:33 < OliverTynes>| and certainly the new async stuff plays very nicely in that I can move a lot more logic to REST instead of convoluted database and avpops stuff
17:33 <     lirakis>| https://dl.dropboxusercontent.com/u/19254184/new.png
17:33 <     lirakis>| ^
17:33 <     razvanc>| wow, that must be awful :)
17:33 <     lirakis>| frotn page
17:33 <     lirakis>| lol
17:34 < OliverTynes>| tbh I havent looked in depth enough to know whats so great about the refactored network modules
17:34 <     lirakis>| well its not "modules"
17:34 <     lirakis>| its the network subsystem entirely
17:34 < OliverTynes>| I meant modules as in modules of ode
17:34 <     razvanc>| lirakis: that's a great start, thanks!
17:34 < OliverTynes>| not proper module
17:34 <     razvanc>| actually there will be modules :)
17:34 <    lirakis> | razvanc, i mean thats a bit of a "joke" ... but im serious in the sense that i think it should be HUGE splash on the front
17:35 <     razvanc>| yeah, we got it
17:36 <     razvanc>| also we should probably add all the new features out there
17:37 <     razvanc>| and not with small bullets :)
17:37 <     lirakis>| yep
17:38 <     razvanc>| we'll do that as soon as we have everything in place
17:38 <     razvanc>| and 2.1 is ready for release
17:39 <     razvanc>| bottom line, as lirakis pointed out, we need to increase the awarness of the new features and write a set of tutorials to help people migrate their scripts
17:40 <     razvanc>| anything else to point out?
17:42 <     razvanc>| going once... going twice...
17:42 <     pbaines>| along wit hthe new features, any backwards incompatible changes and anything that is deprecated
17:42 <      liviuc>| that will be covered in the version migration page
17:43 < OliverTynes>| it doesnt say anywhere what the features of 2.1 are
17:43 < OliverTynes>| except for async
17:43 < OliverTynes>| as I can see on the main page
17:43 <      liviuc>| hmmm... http://www.opensips.org/About/Version-2-1-0
17:43 < OliverTynes>| that should be linked right on the main page
17:43 < OliverTynes>| alongside the async article
17:44 <      liviuc>| honestly, I never seem to find that page (I have bookmarked it)
17:45 < OliverTynes>| also tbh, that page lists a lot of changes for modules
17:45 < OliverTynes>| and some for debug
17:45 <     razvanc>| OliverTynes: well pointed out, we should increase the awarness
17:46 < OliverTynes>| what is the gist of these features lirakis is so keen on?
17:46 < OliverTynes>| if there are implications for people who mainly use scripts, and dont dig into modules code / c++ in general they should also be listed there
17:46 <     lirakis>| the refactor of the network makes tcp viable
17:46 <     lirakis>| which is huge
17:46 < OliverTynes>| I have no idea *what* I am testing
17:46 <     lirakis>| rtpengine is obviusly a big thing as well
17:46 <     razvanc>| they are not yet merged in the master branch, that's why they are not there yet
17:46 <     lirakis>| not sure if thats backported
17:46 < OliverTynes>| lirakis: how and why? (I genuinely want to know :)
17:47 <     lirakis>| OliverTynes, tcp was previously not really async it was like ... sorta
17:47 <     lirakis>| so it was basically a blocking protocol in opensips 1.X
17:47 < OliverTynes>| if you dont do long running rest stuff you *probably* wont block the buffer enough I guess
17:47 <     lirakis>| the async network refactor makes tcp and and ws possible
17:47 <     lirakis>| im not talking about async "operations"
17:47 < OliverTynes>| but if you have hundreds of thousands of users I guess it becomes very lightweight again
17:47 <     lirakis>| im talking at the netowork protocol level
17:47 < OliverTynes>| no I am talking about pure tcp processing
17:48 < OliverTynes>| isnt that part gone async as well?
17:48 <     lirakis>| yes
17:48 <     lirakis>| that is the huge win
17:48 < OliverTynes>| I thought it was regular blocking worker pool now
17:48 <     lirakis>| you could not hae  thousands of tcp users currently
17:48 <     lirakis>| IMO
17:48 <     lirakis>| OliverTynes, its like ... fake async
17:48 <     lirakis>| currently
17:48 <     razvanc>| OliverTynes: if you are using REST, async ops are a huge plus for you
17:48 < OliverTynes>| yeah, or that is, I am not using it yet, because I was waiting for async
17:49 <     razvanc>| because while waiting for the REST response, you can process other messages
17:49 <     razvanc>| that's already in the master branch
17:49 < OliverTynes>| yep
17:49 <     lirakis>| yeah ... it puts a reactor into opensips so the processes arent blocked while you go do rest calls some where
17:49 <      liviuc>| http://www.opensips.org/About/Version-2-1-0#toc21
17:49 <     lirakis>| OliverTynes, the async ops for stuff like rest ARE in already
17:49 < OliverTynes>| is there a timeline for rest_post async too?
17:50 <     lirakis>| the network stuff is not merged yet
17:50 < OliverTynes>| hence, my I *was* waiting
17:50 < OliverTynes>| :)
17:50 <      liviuc>| it's a one-day job, haven't found any time :)
17:50 < OliverTynes>| what is the new async tcp stack based on, simple event loop like node?
17:50 < OliverTynes>| out of curisoity when all you developers are here
17:50 <     lirakis>| its a reactor pattern
17:51 <     lirakis>| so yeah i mean ... its "similar" to how node, event machine etc. work
17:51 <     lirakis>| they are all reactor pattern implementations
17:51 < OliverTynes>| ok
17:51 <     lirakis>| i mean ... opensips devs can correct me if im wrong
17:51 < OliverTynes>| so still syncronous calls into the scripting engine
17:51 <     lirakis>| he he
17:51 < OliverTynes>| if they follow that in a pure sense
17:51 < OliverTynes>| wont that mean that a reactor handler will block even if you do an async script call?
17:52 <     razvanc>| OliverTynes: async operations solve this :)
17:52 <     lirakis>| everything in the script is processing ... if an async op occurs, a context is created and put into the reactor
17:52 <     lirakis>| then the script is free to process some new packet
17:52 <     lirakis>| when the async op returns
17:52 < OliverTynes>| ah, so the scripting engine is decoupled as well
17:52 < OliverTynes>| then I gotcha
17:52 <     lirakis>| the context is resumed and  continues processing
17:53 <     lirakis>| it makes it so the script processes will not block
17:53 <     lirakis>| when doing async operations
17:53 <     lirakis>| they will dump stuff off to the reactor, then take whatever is the next incoming packet and start processing it in the script
17:53 <     lirakis>| again
17:53 <     lirakis>| devs correct me if im wrong in summarizing that
17:53 < OliverTynes>| I am very familiar with async programming, I was curious on how they implemented it
17:53 <     razvanc>| inded, that's how it works
17:53 <     razvanc>| but let's get back to our discussion :)
17:53 <     lirakis>| yea
17:53 <     lirakis>| sorry
17:53 < OliverTynes>| yeah, sort of sorry
17:54 < OliverTynes>| details of *what* you have done also brings interest for people to test 2.1 :)
17:54 <     razvanc>| yes, we tried to to something like that for the transport interface
17:54 <     razvanc>| http://www.opensips.org/Development/TransportInterfaceAPI
17:55 <     razvanc>| give community more information about how we do stuff
17:55 <     lirakis>| right - so i think it is important to make these "details" really accesible
17:55 <     razvanc>| also for async ops, we had a different meeting
17:55 <      liviuc>| Oliver, that sounds like an article for a dev.opensips.org page :)
17:55 <      liviuc>| just thinking out loud...
17:55 <     razvanc>| http://www.opensips.org/Community/IRCmeeting20140827
17:55 < OliverTynes> | that is exactly what I asked for razvanc
17:56 < OliverTynes>| *what I meant
17:56 <     razvanc>| yes, we should probably sum all this up and put them in a wiki or blog as liviuc suggested
17:57 <     razvanc>| that's another thing that would increase the incentivness to test
17:57 <     lirakis>| yeah consolidated in a single location
17:57 <     lirakis>| so that people arent hunting around different news posts or what not
17:57 <     lirakis>| its all broken up on the main page now
17:58 <     razvanc>| ok, then
17:59 <     razvanc>| I already wrote down some ideas we discussed
17:59 <     razvanc>| and as soon as we release the final version of OpenSIPS 2.1, we'll let you know
17:59 <     razvanc>| so you can all give it a try
18:00 <     razvanc>| thank you all for attending this meeting and for all your ideas
18:01 <     lirakis>| thanks again for all the opensips teams hard work :)
Retrieved from https://www.opensips.org/Community/IRCmeeting20150225
Page last modified on March 30, 2015, at 01:39 PM