Dmitriy, thank you for review. This fix should do our tests more stable.

Nikolay, could you please merge?

вт, 20 мар. 2018 г. в 11:49, Dmitriy Govorukhin <
dmitriy.govoruk...@gmail.com>:

> Looks good for me, please merge.
>
> 19 мар. 2018 г. 3:22 ПП пользователь "Dmitry Pavlov" <
> dpavlov....@gmail.com> написал:
>
> I agree it is important, I'm going to do a review, but do not have time
>> slot to do.
>>
>> Who could pick up this review?
>>
>> Dmitriy G., could I ask you?
>>
>> пн, 19 мар. 2018 г. в 15:13, Maxim Muzafarov <maxmu...@gmail.com>:
>>
>>> Dmitry and other igniters,
>>>
>>> Will you have time to review this issue?
>>> I've preperated PR and TC for this, also I've fixed all comments made by
>>> Andrey Kuznetsov and Vyacheslav Daradur.
>>>
>>> I think this is important issue and will make test framework more stable
>>> and clear.
>>>
>>>
>>> TC: https://ci.ignite.apache.org/viewLog.html?buildId=1138151
>>> JIRA: https://issues.apache.org/jira/browse/IGNITE-6842
>>> Upsource: https://reviews.ignite.apache.org/ignite/review/IGNT-CR-502
>>> PR: https://github.com/apache/ignite/pull/3542
>>>
>>> чт, 15 мар. 2018 г. в 13:31, Maxim Muzafarov <maxmu...@gmail.com>:
>>>
>>>> Dmtry,
>>>>
>>>> Can we proceed with this change?
>>>> I've done with fixing review comments and tests that you mentioned
>>>> before.
>>>>
>>>> TC: https://ci.ignite.apache.org/viewLog.html?buildId=1138151
>>>> JIRA: https://issues.apache.org/jira/browse/IGNITE-6842
>>>> Upsource: https://reviews.ignite.apache.org/ignite/review/IGNT-CR-502
>>>> PR: https://github.com/apache/ignite/pull/3542
>>>>
>>>>
>>>>
>>>> вт, 6 мар. 2018 г. в 20:42, Dmitry Pavlov <dpavlov....@gmail.com>:
>>>>
>>>>> Ok, thank you.
>>>>>
>>>>> Please let me know when we can proceed with review
>>>>> https://reviews.ignite.apache.org/ignite/review/IGNT-CR-502
>>>>>
>>>>>
>>>>> вт, 6 мар. 2018 г. в 20:17, Maxim Muzafarov <maxmu...@gmail.com>:
>>>>>
>>>>> > Hello Dmitry,
>>>>> >
>>>>> > Yes, I've updated test classes as you metioned before.
>>>>> > Now i'm fixing review comments. Within next few days I'll prepare
>>>>> final
>>>>> > version of this PR.
>>>>> >
>>>>> > вт, 6 мар. 2018 г. в 20:12, Dmitry Pavlov <dpavlov....@gmail.com>:
>>>>> >
>>>>> > > Hi Maxim,
>>>>> > >
>>>>> > > are there any news on these test fails?
>>>>> > >
>>>>> > > Is issue ready for review?
>>>>> > >
>>>>> > > Sincerely,
>>>>> > > Dmitiry Pavlov
>>>>> > >
>>>>> > > вт, 27 февр. 2018 г. в 17:12, Dmitry Pavlov <dpavlov....@gmail.com
>>>>> >:
>>>>> > >
>>>>> > > > Hi, thank you!
>>>>> > > >
>>>>> > > > I've found several suspicious fails: such test fails have rate
>>>>> less
>>>>> > than
>>>>> > > > 1%, it is probably new failures.
>>>>> > > >
>>>>> > > > It would be great if we can fix it before merge. Could you
>>>>> address this
>>>>> > > > fails?
>>>>> > > >
>>>>> > > > Sincerely,
>>>>> > > > Dmitriy Pavlov
>>>>> > > >
>>>>> > > > IgniteCacheTestSuite5:
>>>>> IgniteCacheStoreCollectionTest.testStoreMap
>>>>> > (fail
>>>>> > > > rate 0,0%)
>>>>> > > > IgniteCacheTestSuite5:
>>>>> > > > CacheLateAffinityAssignmentTest.testDelayAssignmentClientJoin
>>>>> (fail
>>>>> > rate
>>>>> > > > 0,0%)
>>>>> > > > IgniteCacheWithIndexingTestSuite:
>>>>> > > > CacheRandomOperationsMultithreadedTest.testAtomicOffheapEviction
>>>>> (fail
>>>>> > > rate
>>>>> > > > 0,0%)
>>>>> > > > IgniteCacheWithIndexingTestSuite:
>>>>> > > >
>>>>> >
>>>>> CacheRandomOperationsMultithreadedTest.testAtomicOffheapEvictionIndexing
>>>>> > > > (fail rate 0,0%)
>>>>> > > > IgniteCacheWithIndexingTestSuite:
>>>>> > > > CacheRandomOperationsMultithreadedTest.testTxOffheapEviction
>>>>> (fail rate
>>>>> > > > 0,0%)
>>>>> > > > IgniteCacheWithIndexingTestSuite:
>>>>> > > >
>>>>> CacheRandomOperationsMultithreadedTest.testTxOffheapEvictionIndexing
>>>>> > > (fail
>>>>> > > > rate 0,0%)
>>>>> > > >
>>>>> > > > IgniteBinarySimpleNameMapperCacheFullApiTestSuite:
>>>>> > > >
>>>>> > >
>>>>> >
>>>>> GridCachePartitionedNearDisabledMultiNodeWithGroupFullApiSelfTest.testWithSkipStoreTx
>>>>> > > > (fail rate 0,0%)
>>>>> > > >
>>>>> > > > вт, 27 февр. 2018 г. в 17:04, Maxim Muzafarov <
>>>>> maxmu...@gmail.com>:
>>>>> > > >
>>>>> > > >> Yep, link may not be correct.
>>>>> > > >>
>>>>> > > >> Here is correct version:
>>>>> > > >> TC: *
>>>>> > > >>
>>>>> > >
>>>>> >
>>>>> https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8&branch_IgniteTests24Java8=pull%2F3542%2Fhead
>>>>> > > >> <
>>>>> > > >>
>>>>> > >
>>>>> >
>>>>> https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8&branch_IgniteTests24Java8=pull%2F3542%2Fhead
>>>>> > > >> >*
>>>>> > > >>
>>>>> > > >>
>>>>> > > >> вт, 27 февр. 2018 г. в 16:41, Dmitry Pavlov <
>>>>> dpavlov....@gmail.com>:
>>>>> > > >>
>>>>> > > >> > Hi Maxim,
>>>>> > > >> >
>>>>> > > >> > could you please provide link to TC run on your PR? It seems
>>>>> link
>>>>> > > >> provided
>>>>> > > >> > points to run of master. In changes field you may select
>>>>> > > pull/3542/head
>>>>> > > >> > before starting RunAll.
>>>>> > > >> >
>>>>> > > >> > Igniters,
>>>>> > > >> >
>>>>> > > >> > this change is related to our test framework, so change may
>>>>> affect
>>>>> > > your
>>>>> > > >> > tests. Please join to review
>>>>> > > >> > https://reviews.ignite.apache.org/ignite/review/IGNT-CR-502
>>>>> > > >> >
>>>>> > > >> > Sincerely,
>>>>> > > >> > Dmitriy Pavlov
>>>>> > > >> >
>>>>> > > >> > вт, 27 февр. 2018 г. в 16:14, Maxim Muzafarov <
>>>>> maxmu...@gmail.com>:
>>>>> > > >> >
>>>>> > > >> > > Hi all,
>>>>> > > >> > >
>>>>> > > >> > > I think, I've done with this issue, what should we do next?
>>>>> > > >> > >
>>>>> > > >> > > PR: https://github.com/apache/ignite/pull/3542
>>>>> > > >> > > Upsource:
>>>>> > > https://reviews.ignite.apache.org/ignite/review/IGNT-CR-502
>>>>> > > >> > > TC:
>>>>> > > >> > >
>>>>> > > >> > >
>>>>> > > >> >
>>>>> > > >>
>>>>> > >
>>>>> >
>>>>> https://ci.ignite.apache.org/viewModification.html?modId=723895&personal=false&buildTypeId=&tab=vcsModificationTests
>>>>> > > >> > > JIRA: https://issues.apache.org/jira/browse/IGNITE-6842
>>>>> > > >> > >
>>>>> > > >> > >
>>>>> > > >> > > чт, 22 февр. 2018 г. в 14:12, Dmitry Pavlov <
>>>>> > dpavlov....@gmail.com
>>>>> > > >:
>>>>> > > >> > >
>>>>> > > >> > > > Hi Maxim,
>>>>> > > >> > > >
>>>>> > > >> > > > Thank you.
>>>>> > > >> > > >
>>>>> > > >> > > > To my mind stopAllGrids call should be kept in
>>>>> afterTestsStop().
>>>>> > > If
>>>>> > > >> > > > developer forgot to call super(), he will see exception
>>>>> from
>>>>> > > >> > > > beforeTestsStart()
>>>>> > > >> > > > added by you.
>>>>> > > >> > > >
>>>>> > > >> > > > If you think patch is ready to be reviewed, please change
>>>>> JIRA
>>>>> > > >> status
>>>>> > > >> > to
>>>>> > > >> > > > "Patch Available".
>>>>> > > >> > > >
>>>>> > > >> > > > Optionally you can create Upsource review. It would be
>>>>> easier
>>>>> > for
>>>>> > > >> > > multiple
>>>>> > > >> > > > reviewers to handle this patch. This test framework is
>>>>> used by
>>>>> > all
>>>>> > > >> > > Igniters
>>>>> > > >> > > > so Upsource would be good option (
>>>>> > > >> https://reviews.ignite.apache.org/
>>>>> > > >> > ).
>>>>> > > >> > > >
>>>>> > > >> > > > Sincerely,
>>>>> > > >> > > > Dmitriy Pavlov
>>>>> > > >> > > >
>>>>> > > >> > > > чт, 22 февр. 2018 г. в 13:44, Maxim Muzafarov <
>>>>> > maxmu...@gmail.com
>>>>> > > >:
>>>>> > > >> > > >
>>>>> > > >> > > > > Hi all,
>>>>> > > >> > > > >
>>>>> > > >> > > > > I've made some changes based on our previous
>>>>> discusstions,
>>>>> > > please
>>>>> > > >> see
>>>>> > > >> > > PR
>>>>> > > >> > > > > [1]:
>>>>> > > >> > > > > 1) Remove duplicated code for stopGrid (by index and by
>>>>> name);
>>>>> > > >> > > > > 2) Add new method that thows exception if not all grids
>>>>> > haven't
>>>>> > > >> > stopped
>>>>> > > >> > > > > correctly;
>>>>> > > >> > > > > 3)  Change tests that have been affected by this
>>>>> changes;
>>>>> > > >> > > > >
>>>>> > > >> > > > > Also, I have some thoughts for clarification:
>>>>> > > >> > > > > 1) beforeTestsStart() - I expect here in subtests that
>>>>> grids
>>>>> > are
>>>>> > > >> not
>>>>> > > >> > > > > started yet. Am I right?
>>>>> > > >> > > > > 2) I think we should call stopAllGrids in tearDown
>>>>> method. So,
>>>>> > > if
>>>>> > > >> in
>>>>> > > >> > > some
>>>>> > > >> > > > > cases we'll override afterTestsStop in subclasses and
>>>>> forgot
>>>>> > to
>>>>> > > >> call
>>>>> > > >> > > > > super() it won't lead us to exception.
>>>>> > > >> > > > >
>>>>> > > >> > > > > [1] https://github.com/apache/ignite/pull/3542
>>>>> > > >> > > > > [2]
>>>>> > > >> https://ci.ignite.apache.org/viewModification.html?modId=717275
>>>>> > > >> > > > > [3] https://issues.apache.org/jira/browse/IGNITE-6842
>>>>> > > >> > > > >
>>>>> > > >> > > > >
>>>>> > > >> > > > > ср, 7 февр. 2018 г. в 18:28, Maxim Muzafarov <
>>>>> > > maxmu...@gmail.com
>>>>> > > >> >:
>>>>> > > >> > > > >
>>>>> > > >> > > > > > Thank you all,
>>>>> > > >> > > > > >
>>>>> > > >> > > > > > I'll add this comment's for JIRA ticket, if you don't
>>>>> mind.
>>>>> > > >> > > > > >
>>>>> > > >> > > > > > ср, 7 февр. 2018 г. в 15:16, Dmitry Pavlov <
>>>>> > > >> dpavlov....@gmail.com
>>>>> > > >> > >:
>>>>> > > >> > > > > >
>>>>> > > >> > > > > >> Yes, this solution allows to cover both cases:
>>>>> > > >> > > > > >> a) not stopped node from previous test and
>>>>> > > >> > > > > >> b) allows to remove useless code that stops Ignite
>>>>> nodes
>>>>> > from
>>>>> > > >> each
>>>>> > > >> > > > test.
>>>>> > > >> > > > > >>
>>>>> > > >> > > > > >> ср, 7 февр. 2018 г. в 15:13, Anton Vinogradov <
>>>>> > > >> > > > avinogra...@gridgain.com
>>>>> > > >> > > > > >:
>>>>> > > >> > > > > >>
>>>>> > > >> > > > > >> > Maxim,
>>>>> > > >> > > > > >> >
>>>>> > > >> > > > > >> > We discussed with Dima privately, and decided
>>>>> > > >> > > > > >> >
>>>>> > > >> > > > > >> > 1) We have to assert that there is no alive nodes
>>>>> at
>>>>> > > >> > > > > GridAbstractTest's
>>>>> > > >> > > > > >> > beforeTestsStarted
>>>>> > > >> > > > > >> > 2) We have to kill all alive nodes (without force)
>>>>> at
>>>>> > > >> > > > > GridAbstractTest's
>>>>> > > >> > > > > >> > afterTestsStopped
>>>>> > > >> > > > > >> > 3) In case of any exceptions at #2 we have to see
>>>>> test
>>>>> > > error
>>>>> > > >> > > > > >> > 4) We can get rid of all useless stopAllGrids at
>>>>> > > >> > > GridAbstractTest's
>>>>> > > >> > > > > >> > subclasses.
>>>>> > > >> > > > > >> >
>>>>> > > >> > > > > >> >
>>>>> > > >> > > > > >> >
>>>>> > > >> > > > > >> > On Wed, Feb 7, 2018 at 2:32 PM, Dmitry Pavlov <
>>>>> > > >> > > > dpavlov....@gmail.com>
>>>>> > > >> > > > > >> > wrote:
>>>>> > > >> > > > > >> >
>>>>> > > >> > > > > >> > > > Let's just add stopAllGrids(flase) to
>>>>> > GridAbstractTest
>>>>> > > 's
>>>>> > > >> > > > > >> > > afterTestsStopped
>>>>> > > >> > > > > >> > > method body.
>>>>> > > >> > > > > >> > >
>>>>> > > >> > > > > >> > > Can't agree with it becase implicit silent
>>>>> shutdown of
>>>>> > > >> nodes
>>>>> > > >> > > from
>>>>> > > >> > > > > test
>>>>> > > >> > > > > >> > > framework may cause a lot of bugs introduced to
>>>>> Ignite.
>>>>> > > >> > > > > >> > >
>>>>> > > >> > > > > >> > > I think stop+test fail should occur.
>>>>> > > >> > > > > >> > > In that case author of incorrect test or not
>>>>> consistent
>>>>> > > >> Ignite
>>>>> > > >> > > > > >> shutdown
>>>>> > > >> > > > > >> > > will see problem.
>>>>> > > >> > > > > >> > >
>>>>> > > >> > > > > >> > > 'Fail fast' if always better than hidding real
>>>>> problem
>>>>> > > >> under
>>>>> > > >> > > > > automatic
>>>>> > > >> > > > > >> > > framework feature.
>>>>> > > >> > > > > >> > >
>>>>> > > >> > > > > >> > > ср, 7 февр. 2018 г. в 14:05, Anton Vinogradov <
>>>>> > > >> > > > > >> avinogra...@gridgain.com
>>>>> > > >> > > > > >> > >:
>>>>> > > >> > > > > >> > >
>>>>> > > >> > > > > >> > > > Hi all,
>>>>> > > >> > > > > >> > > >
>>>>> > > >> > > > > >> > > > > I've made some research about this problem
>>>>> and i
>>>>> > > think
>>>>> > > >> > that
>>>>> > > >> > > in
>>>>> > > >> > > > > >> > general
>>>>> > > >> > > > > >> > > we
>>>>> > > >> > > > > >> > > > > should move stopAllGrids method in
>>>>> GridAbstractTest
>>>>> > > >> class
>>>>> > > >> > to
>>>>> > > >> > > > > >> > > > > afterTestsStopped method with some changes.
>>>>> Am I
>>>>> > > right?
>>>>> > > >> > > > > >> > > > Let's just add stopAllGrids(flase) to
>>>>> > GridAbstractTest
>>>>> > > 's
>>>>> > > >> > > > > >> > > > afterTestsStopped method
>>>>> > > >> > > > > >> > > > body.
>>>>> > > >> > > > > >> > > >
>>>>> > > >> > > > > >> > > > > I have a question about stopAllGrids(boolean
>>>>> > cancel)
>>>>> > > >> this
>>>>> > > >> > > > > "cancel"
>>>>> > > >> > > > > >> > > > That's just a flag means "do not wait for any
>>>>> > > operations
>>>>> > > >> > > finish"
>>>>> > > >> > > > > >> > > > See no reason to set it true in that case.
>>>>> > > >> > > > > >> > > >
>>>>> > > >> > > > > >> > > > > If you delegate closing to afterTestsStopped
>>>>> this
>>>>> > > will
>>>>> > > >> > > affect
>>>>> > > >> > > > > only
>>>>> > > >> > > > > >> > > > > last test (method).
>>>>> > > >> > > > > >> > > > The idea is to stop all nodes at last test's
>>>>> method
>>>>> > > >> finish.
>>>>> > > >> > > > > >> > > >
>>>>> > > >> > > > > >> > > > >  Nodes that survive between tests can affect
>>>>> > > successive
>>>>> > > >> > > > > >> > > > tests.
>>>>> > > >> > > > > >> > > > Thats ok. we have a lot tests where nodes
>>>>> reusable
>>>>> > > >> between
>>>>> > > >> > > > test's
>>>>> > > >> > > > > >> > > methods.
>>>>> > > >> > > > > >> > > >
>>>>> > > >> > > > > >> > > >
>>>>> > > >> > > > > >> > > > On Wed, Feb 7, 2018 at 1:20 PM, Dmitry Pavlov <
>>>>> > > >> > > > > >> dpavlov....@gmail.com>
>>>>> > > >> > > > > >> > > > wrote:
>>>>> > > >> > > > > >> > > >
>>>>> > > >> > > > > >> > > > > Hi Igniters,
>>>>> > > >> > > > > >> > > > >
>>>>> > > >> > > > > >> > > > > IMO nodes that survive between tests is not
>>>>> general
>>>>> > > >> > practice
>>>>> > > >> > > > and
>>>>> > > >> > > > > >> I'm
>>>>> > > >> > > > > >> > > not
>>>>> > > >> > > > > >> > > > > sure is a best practice. I suggest to mark
>>>>> such
>>>>> > tests
>>>>> > > >> with
>>>>> > > >> > > > some
>>>>> > > >> > > > > >> > method
>>>>> > > >> > > > > >> > > > > overriden from AbstractTest.
>>>>> > > >> > > > > >> > > > >
>>>>> > > >> > > > > >> > > > > About cancel flag, please note
>>>>> stopAllGrids(boolean
>>>>> > > >> > cancel)
>>>>> > > >> > > > > >> > > cancel=false
>>>>> > > >> > > > > >> > > > > allows to wait of checkpoint ends in case
>>>>> > persistence
>>>>> > > >> > > enabled.
>>>>> > > >> > > > > >> > > > >
>>>>> > > >> > > > > >> > > > > I still suggest to avoid stopping any nodes
>>>>> by
>>>>> > test,
>>>>> > > >> but
>>>>> > > >> > > > > validate
>>>>> > > >> > > > > >> not
>>>>> > > >> > > > > >> > > > > stopped node exist and fail test instead of
>>>>> siltent
>>>>> > > >> > implicit
>>>>> > > >> > > > > >> actions.
>>>>> > > >> > > > > >> > > > >
>>>>> > > >> > > > > >> > > > > Sincerely,
>>>>> > > >> > > > > >> > > > > Dmitriy Pavlov
>>>>> > > >> > > > > >> > > > >
>>>>> > > >> > > > > >> > > > > ср, 7 февр. 2018 г. в 13:04, Andrey
>>>>> Kuznetsov <
>>>>> > > >> > > > > stku...@gmail.com
>>>>> > > >> > > > > >> >:
>>>>> > > >> > > > > >> > > > >
>>>>> > > >> > > > > >> > > > > > Hi Maxim,
>>>>> > > >> > > > > >> > > > > >
>>>>> > > >> > > > > >> > > > > > Regarding your first question, the use of
>>>>> > > >> > > afterTestsStopped
>>>>> > > >> > > > is
>>>>> > > >> > > > > >> not
>>>>> > > >> > > > > >> > > > enough
>>>>> > > >> > > > > >> > > > > > to stop all nodes, since each individual
>>>>> test
>>>>> > > >> (method)
>>>>> > > >> > can
>>>>> > > >> > > > > start
>>>>> > > >> > > > > >> > > custom
>>>>> > > >> > > > > >> > > > > set
>>>>> > > >> > > > > >> > > > > > of notes during its operation, and this
>>>>> very test
>>>>> > > >> should
>>>>> > > >> > > > stop
>>>>> > > >> > > > > >> all
>>>>> > > >> > > > > >> > > those
>>>>> > > >> > > > > >> > > > > > nodes. If you delegate closing to
>>>>> > afterTestsStopped
>>>>> > > >> this
>>>>> > > >> > > > will
>>>>> > > >> > > > > >> > affect
>>>>> > > >> > > > > >> > > > only
>>>>> > > >> > > > > >> > > > > > last test (method). Nodes that survive
>>>>> between
>>>>> > > tests
>>>>> > > >> can
>>>>> > > >> > > > > affect
>>>>> > > >> > > > > >> > > > > successive
>>>>> > > >> > > > > >> > > > > > tests.
>>>>> > > >> > > > > >> > > > > >
>>>>> > > >> > > > > >> > > > > > 2018-02-07 1:10 GMT+03:00 Maxim Muzafarov <
>>>>> > > >> > > > maxmu...@gmail.com
>>>>> > > >> > > > > >:
>>>>> > > >> > > > > >> > > > > >
>>>>> > > >> > > > > >> > > > > > > Hello,
>>>>> > > >> > > > > >> > > > > > >
>>>>> > > >> > > > > >> > > > > > > I've made some research about this
>>>>> problem and
>>>>> > i
>>>>> > > >> think
>>>>> > > >> > > > that
>>>>> > > >> > > > > in
>>>>> > > >> > > > > >> > > > general
>>>>> > > >> > > > > >> > > > > we
>>>>> > > >> > > > > >> > > > > > > should move stopAllGrids method in
>>>>> > > GridAbstractTest
>>>>> > > >> > > class
>>>>> > > >> > > > to
>>>>> > > >> > > > > >> > > > > > > afterTestsStopped method with some
>>>>> changes. Am
>>>>> > I
>>>>> > > >> > right?
>>>>> > > >> > > > > >> > > > > > >
>>>>> > > >> > > > > >> > > > > > > Also, I have a question about
>>>>> > > stopAllGrids(boolean
>>>>> > > >> > > cancel)
>>>>> > > >> > > > > >> this
>>>>> > > >> > > > > >> > > > > "cancel"
>>>>> > > >> > > > > >> > > > > > > argument. Why in some cases we should
>>>>> interrupt
>>>>> > > >> > > ComputeJob
>>>>> > > >> > > > > >> and in
>>>>> > > >> > > > > >> > > > some
>>>>> > > >> > > > > >> > > > > > > cases shouldn't? For example here:
>>>>> > > >> > > > > >> > > > > > >
>>>>> > > >> IgniteBaselineAffinityTopologyActivationTest#afterTest
>>>>> > > >> > > > > >> > > > > > > we call method stopAllGrids(false) this
>>>>> way.
>>>>> > Why
>>>>> > > >> not
>>>>> > > >> > > > "true"
>>>>> > > >> > > > > >> > > argument
>>>>> > > >> > > > > >> > > > > > > instead?
>>>>> > > >> > > > > >> > > > > > >
>>>>> > > >> > > > > >> > > > > > >
>>>>> > > >> > > > > >> > > > > > > --
>>>>> > > >> > > > > >> > > > > > Best regards,
>>>>> > > >> > > > > >> > > > > >   Andrey Kuznetsov.
>>>>> > > >> > > > > >> > > > > >
>>>>> > > >> > > > > >> > > > >
>>>>> > > >> > > > > >> > > >
>>>>> > > >> > > > > >> > >
>>>>> > > >> > > > > >> >
>>>>> > > >> > > > > >>
>>>>> > > >> > > > > >
>>>>> > > >> > > > >
>>>>> > > >> > > >
>>>>> > > >> > >
>>>>> > > >> >
>>>>> > > >>
>>>>> > > >
>>>>> > >
>>>>> >
>>>>>
>>>>

Reply via email to