• Aucun résultat trouvé

IREE at the LaAlO 3 /SrTiO 3 interface

no teste, uma das causas pode ser a falta de permissão para o acesso ao banco de dados. O comando abaixo pode ser utilizado para prover as permissões necessárias:

5.3 Instrumentando uma fonte de informação

Esta seção trata dos passos necessários para configurar o módulo escutador no CVS, que passa a ser nossa fonte de informação, atuando em conjunto com o servidor CASSIUS. Para fins de validação, buscava-se acompanhar as mudanças que ocorrem no repositório de artefatos. Ou seja, sempre que algum artefato de código fosse cometido ao repositório, uma mensagem seria enviada ao CASSIUS.

É relevante mencionar que a realização das etapas a seguir deve acontecer no momento anterior aquele em que as notificações já estão sendo efetivamente recebidas pelo CASSIUS, isto porque, uma fase de configuração se faz necessária antes que o CVSyn seja efetivamente utilizado pelos seus usuários finais.

5.3.1 Registrando uma fonte de informação

Cada fonte de informação que desejamos cadastrar junto ao servidor CASSIUS está associada a uma classe (AccountClass). O nome da classe representa uma espécie de categoria de fontes de informação. Uma classe pode possuir várias contas (Account) a ela associada, que são utilizadas para identificar outras fontes que pertencem àquela categoria.

Para registrar uma fonte de informação é necessário utilizar uma operação Register. Como já mencionado, a interface do CASSIUS requer que as requisições sejam repassadas

http://localhost:8080/cassius/cass?Operation=Register&GlobalPassword=Spanikopizza& Account=Test&AccountClass=TestClass&ApplicationPassword=testpass3

>[caminho do mysql ] mysql –e “grant all privileges on * to [conta_do_usuario]@localhost”

Ex.:

via browser. Para nossa solução, uma classe de conta CVSListener foi criada. A esta conta foi associada uma conta chamada Code, como pode ser visto a seguir.

Para validação, apenas artefatos de código foram submetidos ao repositório do CVS, porém outras contas poderiam ter sido criadas para organizar os artefatos referentes aos testes de unidade, de integração, de geração dos builds, relatórios de integração, entre outros.

Registrar uma conta no servidor requer uma senha global e outras informações que devem ser especificadas. Quando a operação de registro é finalizada, a fonte de informação terá sido registrada, uma conta terá sido criada no servidor e todo o acesso futuro a ele deve acontecer por meio desta conta. Maiores detalhes das operações oferecidas pelo CASSIUS podem ser consultados no Anexo C que contém a API do toolkit CASSandra servidor.

5.3.2 Definindo tipos de objetos e eventos

Depois que a fonte foi registrada (CVSListener), é necessário identificar os objetos associados àquela fonte. Antes de registrar os objetos, é necessário definir o tipo desses objetos. O CASSIUS permite a definição de novos tipos de objetos. Este é um aspecto importante, principalmente para que os consumidores possam ter acesso às informações na linguagem praticada no projeto. Isto significa dizer que se o interesse é monitorar código, o tipo código pode ser definido, se o interesse muda, outros tipos de objetos podem ser criados.

Como estamos interessados em monitorar código Java, e definimos apenas a conta Code, apenas os objetos do tipo Code e Package foram definidos. O evento definido para estes objetos foi commit, já que partimos do pressuposto que os consumidores estariam interessados em dois momentos: (1) quando código é alterado no repositório ou (2) quando novo código fosse cometido a ele, que reflete uma operação de commit no CVS.

http://localhost:8080/cassius/cass?Operation=Register&GlobalPassword=Spanikopizza& Account=Code&AccountClass=CVSListener&ApplicationPassword=testpass3

A definição dos tipos e eventos está associada a uma conta em específico. Se uma outra fonte de informação, que está associada à mesma classe de conta, deseja monitorar objetos do tipo código, o tipo precisa ser novamente definido e associado à referida fonte de informação. Além disso, em uma mesma requisição http é possível realizar a definição de vários tipos de objetos e eventos.

5.3.3 Registrando objetos e os associando à fonte

Para efeito de validação, todos os objetos que representam as classes do pacote listener, que no contexto do servidor são do tipo Code, foram criadas. No momento do cadastro dos objetos é possível montar a hierarquia desses objetos. No nosso caso, para definir a estrutura de pacotes e classes, a requisição para o registro de objetos (NewObject) utilizou o parâmetro ParentID, que é opcional, e possui a finalidade de informar ao servidor de notificação quem é o objeto-pai do objeto que está sendo definido. Observe que no momento em que um objeto é cadastrado, um identificador lhe é atribuído. Posteriormente, a manipulação dos objetos requer que o seu identificador seja fornecido.

O passo de cadastro dos objetos é importante porque informa ao servidor que há um novo objeto sendo monitorado, dando a ele a informação apropriada para ajudá-lo a associar mudanças com aquele objeto e informação adicional para ajudar os usuários a reconhecer e encontrar as informações desejadas, facilitando assim, o seu cadastramento como consumidor de informação.

http://localhost:8080/cassius/cass?Account=Code.CVSListener&Password=testpass3&Ope ration=DefineType&Type=Code&Event=commit&Definition=Java class modified on repos itory&Operation=DefineType&Type=Package&Event=commit&Definition=Package modified on repository

http://localhost:8080/cassius/cass?Account=Code.CVSListener&Password=testpass3&Opera tion=NewObject&ObjectName=Reader.java&ObjectID=C:\Mestrado\Implementacao\Integr acao\src\listener\reader.java&ParentID=C:\Mestrado\Implementacao\Integracao\src\listene r&Type=Code&Description=Class Reader.java of listener package